Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe ein Problem mit der Definition bei inneren Klassen.
Es kommt zum Abbruch java.lang.NullPointerException bei der Methode getRaum.
Dort möchte ich eine Referenz auf des Object vom Typ Raum bekommen.
Nur im Moment keine Ahnung, wie ich das anstellen soll.
Es folgt der Code zur Testroutine und zur Klassendefinition.
Vielleicht ist ja auch die Testmethode falsch. Ich möchte gerne auf der Console die Ausgabe
Raum 0.2 / Haupstr. 45 bekommen.
Java:
public class TestGebäude {
public static void main(String[] args) {
Gebäude gebäude = new Gebäude("Hauptstr.", 45, 3, 10);
gebäude.getRaum(0,2);
System.out.println(gebäude);
}
}
Java:
public class Gebäude {
class Stockwerk {
}
class Raum {
private int stockNr;
private int raumNr;
}
public String strasse;
public int hausNummer;
public int[][] anzahl;
public Raum raum;
public Gebäude (String strasse, int hausNummer, int stockWerke, int räume){
this.strasse = strasse;
this.hausNummer = hausNummer;
if (stockWerke < 1)
System.out.println("Bitte mindestens 1 Stockwerk eingeben");
else
if (räume < 1)
System.out.println("Bitte mindestens 1 Raum eingeben");
else
this.anzahl = new int[stockWerke][räume];
}
public void getRaum(int stockwerkNr, int raumNr){
raum.raumNr = raumNr;
raum.stockNr = stockwerkNr;
}
public String toString(){
return "Raum " + raum.stockNr + "." + raum.raumNr + " " + strasse + " " + hausNummer;
}
}
das ist ja in vielen Hinsichten eines falsch,
soll die Methode getRaum() viel eher setRaum() lauten?
dann wäre die Richtung viel klarer, die Probleme beginnen sich zu lichten, aber wie kann so ein elementar Grundfehler bestehen?
bleiben wir beim set:
> Dort möchte ich eine Referenz auf des Object vom Typ Raum bekommen.
verklausuliert ausgedrückt willst du wohl ein Raum-Objekt anlegen,
warum machst du das nicht, was spricht dagegen?
zum Vergleich:
mit
Java:
Gebäude gebäude;
gebäude.getRaum(0,2);
hättest du in main direkt bei gebäude schon eine NullPointerException (abgesehen von weiteren Problemen),
schau dir nochmal deine main an, warum gebäude dort nicht null ist, kommt ähnliches nicht auch beim Raum in Frage?