Problem beim Ausgeben von Arrays

Obscht

Mitglied
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:
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:
S

SlaterB

Gast
wo tritt denn der Fehler auf, soll man das Programm mit hunderten möglichen Eingaben stundenlang testen?

Testprogramme allgemein am besten nie mit Benutzereingaben, Programm starten, -> läuft bis zur Exception oder eben nicht

-----

edit:
in Haus:

Java:
public void anlegen(int i, Haus haus[]){
  System.out.println("Es wird nun Haus-Nummer " + i + " angelegt");
  haus[i].nummer = i;
  ..
wie wärs mit
Java:
public void anlegen(int i){
  System.out.println("Es wird nun Haus-Nummer " + i + " angelegt");
  this.nummer = i;
  ...
das haus aus dem Array brauchst du nicht, this ist das eigene Objekt

-------

public void löschen(Haus haus){
haus = null;
}

macht ja endgültig keinen Sinn mehr, damit wird nicht die Stelle im Array gelöscht
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
noch mal etwas genauer geschaut:
das Hausarray wird bei jedem Haupt-Schleifen-Durchlauf neu angelegt?
 

Obscht

Mitglied
Hi,

Vielen Dank für die schnelle Antwort.
Ja, man muss also zuerst ein Objekt (Haus) erzeugen, bevor man die anderen Aktionen ausführen kann (Habe aus Programmiertechnischer Sicht noch keine Ahnung, wie ich die Speichere ... (kommt noch))
Nach dem man ein Objekt erzeugt hat, ist es natürlich nichtmehr sinnvoll (zumindest jetzt für mich) noch ein weiteres zu erzeugen. Ich möchte auf das erzeugte Objekt jetzt nur eben die die Aktionen ändern, ausgeben und löschen anwenden.

-> also Objekt erzeugen
-> array ausgeben lassen
ich hab jetzt die erzeugende Methode geändert wie dus gesagt hast - (Er schreibt die Werte in das Objekt rein - es wird also erzeugt - passt. Nur auslesen lassen will ers nicht...
hier die Ausgebengeschichte... (Unten mit Grundstück ist Optional...)
Java:
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²");
		}
	}
 

function

Bekanntes Mitglied
wie slater schon sagte, liegt es an zeile 22, bei jedem schleifen durchlauf wird ein neues Haus Array angelegt, also ein array in dem nur null ist.
Du solltest Haus haus[] vor der schleife initialisieren und beim der angabe der häuser anzahl auf eine größe setzen, aber vorsicht damit, wird das haus[] auf eine bestimmte größe gesetzt und man kann dann keine weiteren häuser mehr hinzufügen, ggf. solltest du eine ArrayList<Haus> benutzen..
 
S

SlaterB

Gast
wie gesagt, das Haus-Array wird in jeder Runde neu angelegt, aber nicht immer gefüllt,
deshalb ist in Runde 2 das Array leer
 

Obscht

Mitglied
btw.

zwecks dem löschen.
Wie kann ich dann aus einem Array einen Eintrag rauslöschen? So zerbröselts mir doch dann mein ganzes Array.... Oder?
thx
 
S

SlaterB

Gast
array = null;
mit potentieller Exception wenn du danach etwa 'alles ausgeben' willst,
ne ArrayList ist da besser
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
G Problem beim GUI Allgemeine Java-Themen 9
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
I Problem beim Aufrufen, von Objektmethoden/ -variablen Allgemeine Java-Themen 6
D Selenium WebDriver HtmlUnitDriver Problem beim Automatisieren Allgemeine Java-Themen 1
F Problem beim Speichern eines Attachments Allgemeine Java-Themen 3
M Problem beim Starten der Anwendung Allgemeine Java-Themen 3
O Problem beim Auslesen einer Arraylist von JComboBoxen Allgemeine Java-Themen 2
GUI-Programmer JNI - Problem beim Erstellen der .dll Allgemeine Java-Themen 9
D Problem mit Referenzen beim Serialisieren Allgemeine Java-Themen 3
R Problem beim vCard Manipulieren Allgemeine Java-Themen 2
Rudolf Problem beim Visitorpattern Allgemeine Java-Themen 2
J Problem beim Auslesen einer Datei vom Server Allgemeine Java-Themen 4
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
U Mailclient über getDesktop.mail vorbereiten, Problem beim Anhang: Allgemeine Java-Themen 3
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
N Problem beim lesen einer File in JAR-File Allgemeine Java-Themen 3
N iText Problem beim verlinken anderer PDFs Allgemeine Java-Themen 2
M Problem beim Drucken von PDFs Allgemeine Java-Themen 3
H Problem beim Sortieren einer HashMap mit TreeSet Allgemeine Java-Themen 4
I Problem beim Ausführen von Shell Commandos Allgemeine Java-Themen 3
L Problem beim animieren von Bildern in Applet Allgemeine Java-Themen 23
C Problem beim einlesen bestimmter Seiten Allgemeine Java-Themen 5
Apo JNI-Problem beim erneuten Laden einer dll Allgemeine Java-Themen 28
S Problem beim Drucken auf Netzwerkdrucker unter Linux Allgemeine Java-Themen 9
S Problem beim Anlegen eines JDialogs! Allgemeine Java-Themen 4
A Problem mit ShutdownHook beim schließen Allgemeine Java-Themen 7
S Problem beim Löschen des Inhalts des Fensters Allgemeine Java-Themen 4
A Problem beim serialisieren/deserialisieren einer ArrayList Allgemeine Java-Themen 3
M Problem beim Umrechnen von Pixel in cm. Allgemeine Java-Themen 6
M Problem beim ausführen von Batchdateien Allgemeine Java-Themen 21
Escorter Problem beim starten von Batchfiles Allgemeine Java-Themen 4
A Problem beim Starten der H2-Datenbank Allgemeine Java-Themen 4
L WindowsTrayIcon in Java 1.4 - Problem beim ausführen der JAR Allgemeine Java-Themen 2
E Problem beim Anlegen einer Datei Allgemeine Java-Themen 4
E Problem beim Dateien kodieren ("Byte = Byte +1") Allgemeine Java-Themen 3
G Problem beim starten von eclipse product Allgemeine Java-Themen 2
M Problem beim Erstellen eines Objektes Allgemeine Java-Themen 3
M Problem beim laden von vielen Bildern Allgemeine Java-Themen 16
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
H Problem beim Malen auf ein Panel Allgemeine Java-Themen 2
G iText: Problem beim Drucken von AcroFormen Allgemeine Java-Themen 2
E Problem beim fertigen Programm die Hintergrundfarbe ändern Allgemeine Java-Themen 8
karambara Sonderzeichen-Problem beim Lesen und Speichern von Dateien Allgemeine Java-Themen 6
R Problem beim Datentransfer Allgemeine Java-Themen 19
C Problem beim Umstieg von Java1.4 auf 1.5 Allgemeine Java-Themen 5
K javax.comm Problem beim starten aus .jar heraus Allgemeine Java-Themen 3
S Problem beim Bearbeiten von Java-Dateien unter Linux Allgemeine Java-Themen 3
S Hab ein Problem! Bei Dame! Beim Umranden! Allgemeine Java-Themen 2
G Problem beim speichern von Dateien Allgemeine Java-Themen 8
M Problem mit PageFormat beim Drucken Allgemeine Java-Themen 2
Streeber Problem beim Kompilieren und Ausführen Allgemeine Java-Themen 20
E Problem beim Compilieren Allgemeine Java-Themen 6
O JNI Problem beim kompilieren Allgemeine Java-Themen 2
M Codepage Problem (Vertauscht Zeichen beim Lesen aus Datei) Allgemeine Java-Themen 3
P Problem beim "spliten" eine Textdatei Allgemeine Java-Themen 3
F Problem beim Drucken mit javax.print Allgemeine Java-Themen 2
Z Problem beim Aufruf eines Listener? Allgemeine Java-Themen 4
bernd Problem beim kopieren! Allgemeine Java-Themen 2
B problem beim erstellen einer ausführbaren jar-datei Allgemeine Java-Themen 5
A Problem beim Aufruf von javac Allgemeine Java-Themen 7
J JFrame Problem beim schließen Allgemeine Java-Themen 2
S Problem beim Zugriff auf Internetseiten Allgemeine Java-Themen 4
R Problem beim speichern von eigenem objekt Allgemeine Java-Themen 6
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben