Wie kommt diese NullPointerException zustande?

ahretour

Mitglied
Hi! Ich bin neu in diesem Forum und weiß nicht genau ob das in diesem Thread richtig ist, aber ich versuch es mal.

Ich habe ein kleines Problem beim implementieren einer doppelt verketteten Liste.

Die doppelt verkettete Liste kennt Knoten. Diese Knoten bestehen aus einer Bestellung und zwei Referenzen, eine auf den vorherigen Knoten und eine auf den nächsten Knoten.

Hier zunächst mal die Knoten-Klasse:

Java:
public class Knoten {
	private Bestellung b;
	private Knoten vorheriger;
	private Knoten naechster;
	
	private Knoten(){
		
	}
	
	public Knoten(Bestellung best, Knoten next, Knoten prev){
		DoppeltVerketteteListe.anzKnoten++;
		this.setBestellung(best);
		this.setNaechster(next);
		this.setVorheriger(prev);
	}
	

	
	public void setBestellung(Bestellung best){
		b=best;
	}
	
	public Bestellung getBestellung(){
		return b;
	}
	
	public void setVorheriger(Knoten v){
		vorheriger=v;
	}
	
	public void setNaechster(Knoten n){
		naechster=n;
	}
	
	public Knoten getVorheriger(){
		return vorheriger;
	}
	
	public Knoten getNaechster(){
		return naechster;
	}
	
	@Override
	public String toString(){
		if (this.getBestellung()==null) return null;
		return this.getBestellung().toString();
	}
	
	

}

Die Knoten funktionieren auch einwandfrei. Das Problem liegt jetzt aber in der Klasse der eigentlichen implementierten verketteten Liste. Ich habe in dieser Klasse eine Methode zum Anzeigen aller verfügbaren Bestellungen erstellt:

Java:
public Bestellung[] getAllData(){
		int anz=anzKnoten;
		if(anz==0) return new Bestellung[0];
		Bestellung[] best=new Bestellung[anz];
		best[0]=wurzel.getBestellung();
		Knoten k=wurzel.getNaechster();
		for(int i=1; i<anz; i++){
			best[i]=k.getBestellung();
			if(k!=null) k=k.getNaechster();
		}
		return best;
	}

In der Main-Methode habe ich nun eine doppelt verkettete Liste erstellt und die Liste mit Bestellungen "befüllt". Jetzt wirft die Methode beim Start immer eine NullPointerException. Kann mir da jemand behilflich sein?

Ich freue mich auf eure Antworten!
Danke im Voraus! :eek:
 
Zuletzt bearbeitet von einem Moderator:

Fant

Bekanntes Mitglied
Dann poste doch mal die Fehlermeldung und den zu der Meldung gehörenden Code.

Übrigens: Java-Code bitte in Java-Tags setzen und gescheit einrücken!

Gruß Fant
 

ahretour

Mitglied
Danke für die schnelle Antwort! Das mit dem Java-Code tut mir leid, ich hatte das erst nach meinem Post gelesen!

Das hier ist die Fehlermeldung:
Java:
Exception in thread "main" java.lang.NullPointerException
	at listen.DoppeltVerketteteListe.getAllData(DoppeltVerketteteListe.java:48)
	at listen.TestListe.main(TestListe.java:17)

Dazu noch die Code-Zeilen:

Zeile 48 aus der Klasse 'DoppeltVerketteteListe':
Java:
best[i]=k.getBestellung();

Zeile 17 aus der Klasse 'TestListe':
Java:
System.out.println(d.getAllData());
 

Sesostris

Aktives Mitglied
Und wie sieht DoppeltVerketteteListe.java aus?

Java:
best[i]=k.getBestellung();
if(k!=null) k=k.getNaechster();
Wenn k bereits vor dem if null ist, gibt es bei k.getBestellung() eine NullPointerException.
 

Fant

Bekanntes Mitglied
Vermutlich ist k null, wenn du versuchst darauf zuzugreifen.

Eventuell reicht es schon aus die Prüfung auf Null für beide Code-Zeilen in der for-Schleife zu verwenden.

Java:
for(int i=1; i<anz; i++){
    if(k!=null) {
        best[i]=k.getBestellung();
        k=k.getNaechster();
    }
}

Musst du mal schauen, ob es dann wirklich noch exakt das macht, was du möchtest.
 

ahretour

Mitglied
Okay ich habe den Code nun wie folgt verändert:

Java:
for(int i=1; i<anz; i++){
    if(k!=null) {
        best[i]=k.getBestellung();
        k=k.getNaechster();
    }
}

Und kriege nun die folgende Ausgabe:

Java:
[Llisten.Bestellung;@705789f3
 

Sesostris

Aktives Mitglied
Es wäre wesentlich einfacher, dir zu helfen, wenn du mit deinem Quellcode nicht so sparsam umgehen würdest.
Java:
return this.getBestellung().toString();
Wie sieht die toString-Methode der Klasse Bestellung aus?
 

ahretour

Mitglied
Die toString()-Methode hab ich in der Bestellung-Klasse überschrieben:

Java:
public String toString(){
		return "Bestellung-ID: " + getId() + 
			   "\nBezeichnung: " +getBez() +
			   "\nPriorität: " +getPrio();
	}
 

Fant

Bekanntes Mitglied
Du hast nun aber kein Objekt Bestellung, sondern ein Array. Schreib dir noch eine passende Methode, um das Array von Bestellungen auszugeben.

Gruß Fant
 

Sesostris

Aktives Mitglied
Aber getAllData() liefert dir doch ein Array zurück. Versuch es probeweise einmal mit:
Java:
System.out.println(Array.toString(d.getAllData()));

EDIT: Immer eine Minute zu langsam. :/
 
G

Gast2

Gast
Das geht bei Arrays leider nicht. Wenn du nen Array
Code:
objekte
hast, und du das per
Java:
System.out.println(objekte)
ausgibst, dann wird die toString() Methode deiner Klasse nicht aufgerufen! Ist unschön, ist aber so. Du musst es dann so ausgeben:
Java:
System.out.println(Arrays.toString(objekte));
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Woher kommt diese NullPointerException? Java Basics - Anfänger-Themen 6
G Woher kommt diese Eigenschaft Java Basics - Anfänger-Themen 5
L Input/Output Wieso kommt diese Ausgabe? Java Basics - Anfänger-Themen 12
G Vertsändnisfrage zu Code - Wie kommt diese Ausgabe zustande? Java Basics - Anfänger-Themen 2
M Erste Schritte Wie kommt man auf diese Ausgabe? Java Basics - Anfänger-Themen 3
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
S Wohin kommt das „abstract“? Vor oder nach „public“/ „private“ /... Java Basics - Anfänger-Themen 3
E Was kommt in ein Objekt und was in die Main Methode? Java Basics - Anfänger-Themen 8
D Woher kommt die 48?! Wie setz ich den Anfangswert auf 0??? Java Basics - Anfänger-Themen 8
I Schleife fragt Wert ab bis 0 kommt (mit IO.java klasse) Java Basics - Anfänger-Themen 16
V Operatoren Warum kommt bei double bei den Nachkommastellen irgendwann eine 2?! (1.20000000000002) Java Basics - Anfänger-Themen 5
V Operatoren Warum kommt nicht das gewünschte Ergebnis dieser Operation? Java Basics - Anfänger-Themen 3
J Ein Objekt zurückgeben, was kommt dabei raus ? Java Basics - Anfänger-Themen 4
S button kommt durch bild Java Basics - Anfänger-Themen 13
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
Tacofan Hangman - ist der Buchstabe vorhanden wenn ja wo kommt er vor Java Basics - Anfänger-Themen 6
J BlueJ - kompilieren - und wie weit kommt man mit BlueJ? Java Basics - Anfänger-Themen 4
IngoF Welches Event kommt wann? Java Basics - Anfänger-Themen 8
S Kommt es zu Seiteneffekten wenn man waehrend den laufenden JUnit Tests den Code aendert? Java Basics - Anfänger-Themen 2
K Methoden ResultSet als Methodenübergabewert kommt leer an Java Basics - Anfänger-Themen 0
C For-Schleife wie kommt man auf die Lösung? Java Basics - Anfänger-Themen 2
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
A Input/Output Wo kommt das Newline her? Java Basics - Anfänger-Themen 7
R Input/Output ImageIO kommt mit pic_url nicht klar Java Basics - Anfänger-Themen 10
J Woher kommt das Objekt "Math" bei Math.random(); ? Java Basics - Anfänger-Themen 3
D Was kommt raus, wenn NaN mit einer Zahl verglichen wird? Java Basics - Anfänger-Themen 5
K Arraylisten auslesen, kommt nur Quatsch raus Java Basics - Anfänger-Themen 15
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
S Beim kompilieren kommt Ant Build.Was ist das? Java Basics - Anfänger-Themen 8
T TCP, Empfang nur wenn wirklich etwas kommt Java Basics - Anfänger-Themen 6
R Zeit kommt mir zu lange vor... Java Basics - Anfänger-Themen 7
A ArrayIndexOutOfBoundsException - woher kommt er?! Java Basics - Anfänger-Themen 4
eXistenZ Java-Boon kommt nicht zurrecht mit der Umsetzung einer Aufgabe... Java Basics - Anfänger-Themen 7
B Warum kommt immer die 0 als Ergebnis? Was habe ich falsch gemacht? Java Basics - Anfänger-Themen 18
I Warum kommt der Fehler? Minesweeper programmieren Java Basics - Anfänger-Themen 7
M Woher kommt der Funktionsaufruf? Java Basics - Anfänger-Themen 2
K Wieso kommt ne NullPointerException Java Basics - Anfänger-Themen 3
A nach if abfrage kommt fehler Java Basics - Anfänger-Themen 8
G JFileChooser kommt doppelt Java Basics - Anfänger-Themen 3
P Wieso kommt die Fehlermeldung ".class expected"? Java Basics - Anfänger-Themen 2
P Textdateischreiben, etwas fehlt noch bzw. 1 error kommt Java Basics - Anfänger-Themen 4
J Hilfe Java Hausaufgabe kommt nicht weiter Java Basics - Anfänger-Themen 5
H Server Client, es kommt nichts an. Java Basics - Anfänger-Themen 5
B Char kommt 2 mal im Wort vor (indexOf) Java Basics - Anfänger-Themen 5
B Woher kommt der Name Java? Java Basics - Anfänger-Themen 4
L Compilieren funktioniert, aber beim öffnen kommt nichts Java Basics - Anfänger-Themen 7
G Stringsuche: Wie häufig kommt String1 in Strin2 vor? Java Basics - Anfänger-Themen 7
U Wie oft kommt WertX int[] vor? Java Basics - Anfänger-Themen 2
frau-u StackOverflow - woher kommt es? Java Basics - Anfänger-Themen 7
G Java-1.5-Installation: warum kommt keine javac.exe mit? Java Basics - Anfänger-Themen 7
S die java machine läuft viel zuuuu langsam, woher kommt das?? Java Basics - Anfänger-Themen 3
P Wie kann diese Schleife beenden Java Basics - Anfänger-Themen 1
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
M Wie kommen diese Ausgaben zustande? Java Basics - Anfänger-Themen 12
W Warum diese Fehlermeldung? Java Basics - Anfänger-Themen 12
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
Alen123 Wie würdet ihr diese Aufgabenstellung lösen? Java Basics - Anfänger-Themen 18
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
Fats Waller Wofür stehen diese Konstanten im Java Labyrinth ? Java Basics - Anfänger-Themen 5
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
dieter000 Wie schreibe ich diese ZEile um? Java Basics - Anfänger-Themen 1
M Objekt mit eindeutiger ID löschen, das nächste Objekt hat dann diese ID Java Basics - Anfänger-Themen 5
J Womit kann ich diese Methode testen? Java Basics - Anfänger-Themen 5
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
ZH1896ZH Wieso diese Ausgabe?? Java Basics - Anfänger-Themen 10
T Was macht diese Zeile? Java Basics - Anfänger-Themen 9
O Was tut diese Methode? und wie müssen die assertions aussehen? Java Basics - Anfänger-Themen 21
F Wie implementiere ich diese Aufgabenstellung? Java Basics - Anfänger-Themen 16
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
F Warum erhalte ich diese Fehler bei der Einbindung von SQLite JDBC in Eclipse? Java Basics - Anfänger-Themen 1
F Warum verläuft DIESE Schleife endlos? Java Basics - Anfänger-Themen 4
D Was bedeutet diese Schreibweise? Java Basics - Anfänger-Themen 9
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
W Wie vermerke ich diese Struktogramm Passage in Java Syntax? Java Basics - Anfänger-Themen 8
N Methoden warum wird diese Methode aufgerufen Java Basics - Anfänger-Themen 9
L Datentypen Date API - diese Woche bestimmen Java Basics - Anfänger-Themen 1
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
B Kann mir jemand diese Bedingung erklären Java Basics - Anfänger-Themen 5
B Wie könnte man mit Java diese Matheaufgabe lösen Java Basics - Anfänger-Themen 7
B Wie würdet ihr diese Methode erklären? Java Basics - Anfänger-Themen 2
C Methoden Welche JSoup Methoden Und Parameter für diese HTML Tags Java Basics - Anfänger-Themen 4
kilopack15 Ist diese setter-Methode richtig? Java Basics - Anfänger-Themen 2
B Wie funktionieren diese Methoden in diesem Sortierverfahren genau? Java Basics - Anfänger-Themen 2
B Was macht diese Methode? Java Basics - Anfänger-Themen 9
P Was macht diese methode Java Basics - Anfänger-Themen 2
P Terminieren diese Schleifen Java Basics - Anfänger-Themen 6
U Ist diese Methode zur Matrix Vektor Multiplikation korrekt ? Java Basics - Anfänger-Themen 5
T Zeilen des ListArray nach einem Wort durchsuchen und diese Zeile ausgeben Java Basics - Anfänger-Themen 4
K Methoden mit den Namen accept. Welche Funktion haben diese? Java Basics - Anfänger-Themen 2
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2
J Kann mir bitte mal jemand diese Codes erklären? Java Basics - Anfänger-Themen 19
D Erste Schritte Dynamisch Objekte erzeugen und diese durchsuchen Java Basics - Anfänger-Themen 7
X Wann schreibt man diese Syntax zeichen { } Java Basics - Anfänger-Themen 8
A Wieso kann ich nicht auf diese Variable zugreifen? Java Basics - Anfänger-Themen 6
A Erste Schritte Wieso funktioniert diese Klasse nicht Java Basics - Anfänger-Themen 11
H Wie erstelle ich diese Klassen? Java Basics - Anfänger-Themen 44

Ähnliche Java Themen

Neue Themen


Oben