Hallo,
ich habe ein Problem beim Ausgeben von meinem Array.
Ich kann mein neu Erzeugtes Objekt zwar mit Inhalten füllen,
wenn ich es allerdings dann ausgeben lassen will, bringt er mir Nullpointer Exeption...
(Bzw. neben ausgeben funktioniert auch ändern nicht... Aber eins nach dem anderen ;-))
-> Bin noch JAVA-Anfänger, also nicht lachen.
Danke

Hier die main:
Und hier die betreffende Klasse
ich habe ein Problem beim Ausgeben von meinem Array.
Ich kann mein neu Erzeugtes Objekt zwar mit Inhalten füllen,
wenn ich es allerdings dann ausgeben lassen will, bringt er mir Nullpointer Exeption...
(Bzw. neben ausgeben funktioniert auch ändern nicht... Aber eins nach dem anderen ;-))
-> Bin noch JAVA-Anfänger, also nicht lachen.
Danke
Hier die main:
Java:
package uebung;
public class Hausverwaltung {
public static void main(String[] args) {
int temp = 0;
int temp2 = 0;
// Auswahl verlangen
do {
System.out
.println("Sie haben in diesem Menu verschiedene Möglichkeiten: ");
System.out.println("1) Haus anlegen 2) Haus löschen");
System.out
.println("3) Haus ändern 4) Haus/Häuser ausgeben");
System.out.println("Was möchten Sie machen?");
temp = javapack.Einlesen.LiesInt();
if(temp == 1){
System.out.println("Wie viele Häuser möchten Sie anlegen?");
temp2 = javapack.Einlesen.LiesInt();
}
Haus haus[] = new Haus[temp2];
switch (temp) {
case 1:
for (int i = 0; i<temp2; i++) {
haus[i] = new Haus();
haus[i].anlegen(i, haus);
System.out.println(haus[i].getTyp()+" , "+haus[i].getNummer()+" , "+haus[i].getPreis());
}
break;
case 2:
System.out.println("Welches Haus möchten Sie löschen?");
System.out.println("Bitte Nummer eingeben:");
temp = javapack.Einlesen.LiesInt();
// diese Funktion geht erst, nachdem ich Häuser angelegt habe!!!
for (int i = 0; i < haus.length; i++) {
if (haus[i].getNummer() == temp) {
haus[i].löschen(haus[i]);
}
}
break;
case 3:
System.out.println("Welches Haus möchten Sie ändern?");
System.out.println("Bitte Nummer eingeben:");
temp = javapack.Einlesen.LiesInt();
// diese Funktion geht erst, nachdem ich Häuser angelegt habe!!!
for (int i = 0; i < haus.length; i++) {
if (haus[i].getNummer() == temp) {
haus[i].ändern(i, haus);
}
}
break;
case 4:
System.out
.println("Möchten Sie alle angelegten Häuse ausgeben oder nur ein bestimmtes?");
System.out
.println("Bitte auswählen: 1) nur ein bestimmtes 2) alle");
temp = javapack.Einlesen.LiesInt();
// diese Funktion geht erst, nachdem ich Häuser angelegt habe!!!
if (temp == 1) {
System.out
.println("Bitte entsprechende Haus-Nummer eingeben: ");
temp = javapack.Einlesen.LiesInt();
for (int i = 0; i < haus.length; i++) {
if (haus[i].getNummer() == temp) {
haus[i].ausgeben();
} else {
System.out.println("Haus nicht gefunden!");
}
}
}
if (temp == 2) {
for (int i = 0; i < haus.length; i++) {
haus[i].ausgeben();
}
}
break;
default:
System.out
.println("Etwas lief schief. Wenden Sie sich an den System-Administrator!");
break;
}
} while (ok());
}
private static boolean ok() {
while (true) {
System.out.println("Noch eine Aufgabe?(j/n)");
char op = javapack.Einlesen.LiesChar();
if (op == 'j' || op == 'J')
return true;
if (op == 'n' || op == 'N')
return false;
System.out.println("Falsche Eingabe");
}
}
}
Und hier die betreffende Klasse
Java:
package uebung;
public class Haus {
private int nummer;
private int größe;
private String typ;
private double preis;
private Grundstück grundstück;
public Haus(){
// Konstruktor - o.g. Parameter werden beim Anlegen des Objektes verlangt!
// falls eben manuell angelegt wird - zur vorbeugung, dass keine leeren Objekte angelegt werden
//this.nummer = nummer;
//this.größe = größe;
//this.typ = typ;
//this.preis = preis;
}
// setters
public void setNummer(int nummer){
this.nummer = nummer;
}
public void setGröße(int größe){
this.größe = größe;
}
public void setTyp(String typ){
this.typ = typ;
}
public void setPreis(double preis){
this.preis = preis;
}
public void setGrundstück(Grundstück grundstück){
this.grundstück = grundstück;
}
// getters
public int getNummer(){
return nummer;
}
public int getGröße(){
return größe;
}
public String getTyp(){
return typ;
}
public double getPreis(){
return preis;
}
public Grundstück getGrundstück(){
return grundstück;
}
// andere Methoden
public void ändern(int i, Haus haus[]){
System.out.println("Sie möchten ein Haus ändern. Dieser Assistent führt Sie durch die "+
"verschiedenen Schritte.");
System.out.println("Bitte Haustyp eingeben: ");
haus[i].typ = javapack.Einlesen.LiesString();
System.out.println("Bitte Größe eingeben: ");
haus[i].größe = javapack.Einlesen.LiesInt();
System.out.println("Bitte Preis eingeben: ");
haus[i].preis = javapack.Einlesen.LiesDouble();
System.out.println("Vielen Dank! Haus-Nummer " + haus[i].nummer + " wurde geändert!");
}
public void löschen(Haus haus){
haus = null;
}
public void ausgeben(){
System.out.println("Im folgenden sehen Sie alle Stammdaten zum Haus-Nummer " + nummer + ".");
System.out.println("Haustyp: " + typ + "\n" + "Hausgröße: " + größe + "m², " +
"Kaufpreis: " + preis + "€.");
if(grundstück != null){
System.out.println("Daten zum Grundstück:");
System.out.println("Beschreibung: " + grundstück.getBeschreibung() +
"\nGrundstücksgröße: " + grundstück.getGröße() + "m²");
}
}
public void anlegen(int i, Haus haus[]){
System.out.println("Es wird nun Haus-Nummer " + i + " angelegt");
haus[i].nummer = i;
System.out.println("Bitte Haustyp angeben:");
haus[i].typ = javapack.Einlesen.LiesString();
System.out.println("Bitte Größe eingeben: ");
haus[i].größe = javapack.Einlesen.LiesInt();
System.out.println("Bitte Preis eingeben: ");
haus[i].preis = javapack.Einlesen.LiesDouble();
}
}
Zuletzt bearbeitet von einem Moderator: