NullPointerDereferenceException, brauche Hilfe
-
Hi also mein Programm läuft irgendwie nicht.Bekomm den Fehler:
NullPointerDereferenceException aborted in Zeile 74
Könnte mir einer sagen warum das so ist und vielleicht mein Programm umändern damit es läuft?Will damit die Hausnummer der beiden Hauser an der Kreuzung ausgeben.1: prog aufgabe1 2: 3: struct Haus_TypA 4: { int hausnummer; 5: int anz_fenster; 6: int anz_tueren; 7: int anz_wohnungen; 8: } 9: 10: class Haus_TypB 11: { int hausnummer; 12: int anz_fenster; 13: int anz_tueren; 14: int anz_wohnungen; 15: Haus_TypB nachbar; 16: } 17: 18: class strasse_TypA 19: { int anz_haeuser; 20: Haus_TypA haeuserkette; 21: } 22: 23: class strasse_TypB 24: { int anz_haeuser; 25: Haus_TypB haeuserkette; 26: } 27: 28: strasse_TypA hauptstrasse; 29: strasse_TypB mittelweg; 30: 31: Haus_TypA neues_Haus_bauen_TypA(int i) 1 32: { Haus_TypA villa; 33: villa.hausnummer = i; 34: villa.anz_fenster = 10; 35: villa.anz_tueren = 3; 36: villa.anz_wohnungen = 2; 37: return villa; 38: } 39: 40: Haus_TypB neues_Haus_bauen_TypB(int i) 41: { Haus_TypB mehrfamilienhaus; 42: mehrfamilienhaus = new Haus_TypB (); 43: mehrfamilienhaus.hausnummer = i; 44: mehrfamilienhaus.anz_fenster = 30; 45: mehrfamilienhaus.anz_tueren = 3; 46: mehrfamilienhaus.anz_wohnungen = 7; 47: return mehrfamilienhaus; 48: } 49: 50: { int zaehler; 51: 52: // Haeuser in der Hauptsrasse anlegen 53: zaehler=10; 54: while (zaehler > 0) 55: { 56: hauptstrasse = new strasse_TypA(); 57: hauptstrasse.haeuserkette = neues_Haus_bauen_TypA(zaehler); 58: zaehler = zaehler - 1; 59: } 60: 61: // Haeuser im Mittelweg anlegen 62: zaehler=8; 63: mittelweg = new strasse_TypB(); 64: while (zaehler > 0) 65: { 66: mittelweg.haeuserkette = neues_Haus_bauen_TypB(zaehler); 67: zaehler = zaehler - 1; 68: } 69: 70: // Kreuzung zwischen der Hauptstrasse und dem Mittelweg 71: // Eckhaus = 2. Haus in der Hauptsrasse und 72: // 4. Haus im Mittelweg 73: print (hauptstrasse.haeuserkette.hausnummer); 74: print (mittelweg.haeuserkette.nachbar.nachbar.nachbar.hausnummer); 75: }
-
die 1 zwischen Zeile 31 und 32 muss im übrigen weg
-
Falsches Forum.
Benutze einen Debugger.
Gebe alle Elemente einzeln aus. In etwa so:printf("%p\n", &mittelweg); printf("%p\n", &mittelweg.haeuserkette); printf("%p\n", &mittelweg.haeuserkette.nachbar); ... printf("%p\n", &mittelweg.haeuserkette.nachbar.nachbar.nachbar.hausnummer);
Dann siehst du auch welches Element 0 ist und dann kannst du nachsehen wieso es 0 ist.
-
Da dies nicht c ist sondern c4(vorstufe von c) kann ich noch keinen debugger nutzen.wenn ich alles einzeln ausgebe, kriege ich bei jeder stufe immer 1 heraus außer bei der Zeile komplett(mittelweg.haeuserkette.nachbar.nachbar.nachbar.hausnummer)kommt der Fehler. Jemand anders eine Idee wie es läuft?
-
Hallo,
ist eigentlich ziemlich klar, wenn ich's richtig gesehen habe. Ein Haus_TypB hat einen Nachbarn:
10: class Haus_TypB 11: { int hausnummer; 12: int anz_fenster; 13: int anz_tueren; 14: int anz_wohnungen; 15: Haus_TypB nachbar; //<---- hier ist ein Nachbar!! 16: }
Und wenn du ein neues Haus_TypB baust:
40: Haus_TypB neues_Haus_bauen_TypB(int i) 41: { Haus_TypB mehrfamilienhaus; 42: mehrfamilienhaus = new Haus_TypB (); 43: mehrfamilienhaus.hausnummer = i; 44: mehrfamilienhaus.anz_fenster = 30; 45: mehrfamilienhaus.anz_tueren = 3; 46: mehrfamilienhaus.anz_wohnungen = 7; 47: return mehrfamilienhaus; 48: }
ignorierst du die Nachbarn
MfG,
Probe-Nutzer
-
Danke, und wie schrieb ich es jetzt um damit es wieder funktioniert?