Unerklärliche NullPointerException

lowbrain

Mitglied
Moin Moin!

Ich habe ein kleines Problem und stehe grade voll auf dem Schlauch...
Das Problem ist folgendes:
Ich möchte das Smess-Spiel implementieren. Dazu habe ich ein Array aus Spielfeldern erzeugt (court[][]). Die Klasse Spielfeld besitzt eine Spielfigur, bzw. wenn keine Figur darauf ist, dann ist es null. Die Spielfigur wiederum hat eine Position, also ein Spielfeld auf dem sie steht.
Jetzt möchte ich die Figur umsetzen. Das macht folgender Programmabschnitt:

[Java]
public void zugAusfuehren(int startZ, char startS, int endZ, char endS){
int sZ = startZ;
int eZ = endZ;
int sS = startS - 'a' + 1;
int eS = endS - 'a' + 1;

if(this.court[eZ][eS].getFigur() != null){
// Geschlagene Figur löschen
this.court[eZ][eS].getFigur().getBesitzer().deleteFigur(this.court[eZ][eS].getFigur());
}
// Figur auf neues Feld setzen und altes Feld auf null
this.court[eZ][eS].setFigur(this.court[sZ][sS].getFigur());
Spielfigur aushilfe = new Spielfigur();
aushilfe = court[sZ][sS].getFigur();
aushilfe.setPosition(court[eZ][eS]);
this.court[sZ][sS].setFigur(null);

}
[/Java]

Das Problem ist, das in Zeile 13 manchmal eine NullPointerException auftritt. Dabei durchläuft jeder Spielzug zuerst ein Schiedsrichterprogramm, bevor er ausgeführt wird. Der Spielzug ist also korrekt. Es existiert sowohl das von-Feld, als auch das nach-Feld, und das Feld von dem gestartet wird hat eine Spielfigur.
Das komische ist, manchmal dauert es 2 Züge, bis der Fehler auftritt, aber ein anderes Mal kann er erst 10 Züge machen, und dann ist Feierabend.

Vielleicht hat jemand eine Idee? Manchmal sieht man ja den Wald vor lauter Bäumen nicht...

Vielen Dank schonmal im voraus!
 

jgh

Top Contributor
[c] Spielfigur aushilfe = new Spielfigur();[/c] dieser Codeabschnitt schmeißt eine NPE?

Dann zeig mal bitte den Konstruktor, bzw. den Stacktrace.
 

Antoras

Top Contributor
Der Spielzug ist also korrekt.
Offenbar nicht, sonst würde ja keine NPE fliegen.

Du greifst in deiner Methode immer wieder auf unterschiedliche Felder des Arrays court zu. Wenn eines dieser Felder null ist, dann fliegt natürlich eine NPE sobald du darauf zugreifen möchtest.

In Zeil 13 kann im übrigen keine NPE fliegen, es sei denn die NPE fliegt im Konstruktor von Spielfigur. Im übrigen ist diese Zeile sinnlos, da du die Referenz auf das erzeugte Objekt in der nächsten Zeile sofort wieder überschreibst.
 

lowbrain

Mitglied
Ahh, sry,

Zeile 15 schmeißt die Exception:

Exception in thread "main" java.lang.NullPointerException
at lowBrainKI.LowBrain.zugAusfuehren(LowBrain.java:68)
at lowBrainKI.LowBrain.naechsterSpielzug(LowBrain.java:41)
at lowBrainKI.TestBrett.main(TestBrett.java:34)


----------------------------------------------
Natürlich ist die Zeile sinnlos, wie auch zum Beispiel die int nochma neu zuzuweisen. Das habe ich gemacht, um halt im Debug-Modus zu sehen, ob er alles richtig macht :)
 
Zuletzt bearbeitet:

Antoras

Top Contributor
Zeile 15 ist sehr suspekt. Wenn du der Figur eine neue Position zuweisen willst, warum übergibt du dann der Methode das Object auf dieser Position? Was passiert wenn hier null übergeben wird?
 

lowbrain

Mitglied
Das ganze Ding ist wie eine riesige doppelt und dreifach verkette Liste...
Also es gibt zwei Spieler, die haben Figuren, und ein Spielbrett aus Feldern.
Und ich habe halt immer Referenzen von
Spieler<--> Figur <-->Spielfeld

Naja, das ich halt das Objekt übergebe funktioniert aber, da gab es noch nie Probleme...

Joa, nicht das beste, aber ist halt über die Wochen gewachsen, hat kleiner angefangen...

Naja, auf jeden Fall wird aushilfe nie null, da ja vorher geschaut wird, durch das Schiedsrichterprogramm, ob auf dem Feld ein Spieler ist...
 

Cola_Colin

Top Contributor
Füge mal das vor Zeile 15 ein:

Java:
if (aushilfe == null) System.out.println("Aushilfe ist NULL !");

und teste.
 

tagedieb

Top Contributor
Ich finde den ganzen Code recht verwirrend.

Versuch mal den Code aufzuraeumen und einen mehr Objektorientierten Ansatz zu waehlen.
Zum Beispiel spendier deiner Spielfigur die Methoden:

set(..)
moveTo(...)
remove()

Ausserdem denke ich wie gegenseitige Abhaengigkeit von Spielfigur und Spielfeld kann zu Rekursiv- und NullPointerFehlern fuehren.
Z.B. Loesche Figur aus Spielfeld -> loesche Spielfeld aus Figur -> Loesche Figur aus Spielfeld (already deleted) -> NullpointerException


Wieso erstellst du hier eine neue Spielfigur?

Java:
    Spielfigur aushilfe = new Spielfigur();
    aushilfe = court[sZ][sS].getFigur();


Sollte es nicht ehrer so lauten?
Java:
    Spielfigur aushilfe = court[sZ][sS].getFigur();
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Variablen Unerklärliche NullPointerException Java Basics - Anfänger-Themen 2
N Methoden Unerklärliche Error Meldung Java Basics - Anfänger-Themen 3
D Unerklärliche IndexOutOfBoundsException Java Basics - Anfänger-Themen 5
I Unerklärliche Null-Pointer-Exception bei JRadioButton Array Java Basics - Anfänger-Themen 2
C Unerklärliche IndexOutOfBounds - Exception Java Basics - Anfänger-Themen 6
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
C Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 10
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
berserkerdq2 Nullpointerexception, obwohl ich Array initialisiere? Java Basics - Anfänger-Themen 1
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
Jose05 Nullpointerexception Java Basics - Anfänger-Themen 7
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
H Java NullPointerException Java Basics - Anfänger-Themen 4
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
L Threads Komischer NullPointerException Java Basics - Anfänger-Themen 2
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
D NullPointerException in foreach loop Java Basics - Anfänger-Themen 1
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
D NullPointerException im Array Java Basics - Anfänger-Themen 4
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
V NullPointerException Java Basics - Anfänger-Themen 2
S NullPointerException während ResultSet Java Basics - Anfänger-Themen 7
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
scratchy1 NullPointerException Java Basics - Anfänger-Themen 19
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
W Optional<T> - NullPointerException Java Basics - Anfänger-Themen 37
Jascha NullPointerException vs NumberFormatException Java Basics - Anfänger-Themen 5
L Variablen NullPointerException bei Dateigröße (Nr.1) Java Basics - Anfänger-Themen 4
M Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 13
D NullPointerException umgehen Java Basics - Anfänger-Themen 17
Z Objekt Array führt zum NullPointerException Java Basics - Anfänger-Themen 2
W NullPointerException obwohl nicht null? Java Basics - Anfänger-Themen 3
W ArrayList NullPointerException Java Basics - Anfänger-Themen 4
A NullPointerException Java Basics - Anfänger-Themen 6
S NullPointerException Java Basics - Anfänger-Themen 4
T OOP Wörterbuch NullPointerException Java Basics - Anfänger-Themen 4
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
O NullPointerException Java Basics - Anfänger-Themen 2
M Interpreter-Fehler Feld NullPointerException Java Basics - Anfänger-Themen 4
E Compiler-Fehler nullPointerException in verschachteltem Modell Java Basics - Anfänger-Themen 6
DaCrazyJavaExpert Threads NullPointerException Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
kodela NullPointerException Java Basics - Anfänger-Themen 12
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
H NullPointerException obwohl Objekt angelegt wurde Java Basics - Anfänger-Themen 1
A Threads Reentrantlock | NullpointerException möglicher Deadlock? Java Basics - Anfänger-Themen 0
K Compiler-Fehler NullPointerException lösen Java Basics - Anfänger-Themen 16
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
P Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 1
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
S Methoden Methode funktioniert nicht | NullPointerException Java Basics - Anfänger-Themen 6
F NullpointerException bei zweidimensionalem Array Java Basics - Anfänger-Themen 2
Z OOP - Array ständig NullPointerException Java Basics - Anfänger-Themen 4
J Verstehe die NullPointerException nicht Java Basics - Anfänger-Themen 1
T Nullpointerexception und es wird nichts angezeigt Java Basics - Anfänger-Themen 15
H NullPointerException, aber wieso? Java Basics - Anfänger-Themen 5
B ProcessMessage NullPointerException Java Basics - Anfänger-Themen 11
shiroX Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 9
MrSnake ItemListener mit NullPointerException Java Basics - Anfänger-Themen 3
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
M NullPointerException Java Basics - Anfänger-Themen 8
B Vererbung NullPointerException Java Basics - Anfänger-Themen 38
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
G NullPointerException Java Basics - Anfänger-Themen 1
J NullpointerException Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Nullpointerexception trotz Ordentlicher Initialisierung Java Basics - Anfänger-Themen 4
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
D Java Fehler: NullPointerException Java Basics - Anfänger-Themen 1
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
X Problem mit NullPointerException Java Basics - Anfänger-Themen 2
K NullPointerException in der Hashtable Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Hilfestellung bei einer NullPointerException Java Basics - Anfänger-Themen 1
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
L NullPointerException Java Basics - Anfänger-Themen 11
M Nullpointerexception??? Java Basics - Anfänger-Themen 2
W NullPointerException bei DefaultListModel Java Basics - Anfänger-Themen 5
N NullPointerException bei Konsolenausgabe Java Basics - Anfänger-Themen 5
J Klasse in Klasse; NullPointerException Java Basics - Anfänger-Themen 8
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
Q NullPointerException Java Basics - Anfänger-Themen 5
H NullPointerException Java Basics - Anfänger-Themen 5
T Threads MultiThreading NullPointerException Java Basics - Anfänger-Themen 7
K NullPointerException wird geworfen, bitte um Hilfe! Java Basics - Anfänger-Themen 7
O Objekt weitergeben Meth Class NullPointerException Java Basics - Anfänger-Themen 2
J Char-Array - NullPointerException Java Basics - Anfänger-Themen 3
M Compiler-Fehler Java suckt - java.lang.NullPointerException Java Basics - Anfänger-Themen 12
S Array wird nicht übernommen NullPointerException Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben