NullPointerException

Maerc

Mitglied
Ich lerne seit ein paar Tagen Java und komme einfach nicht drauf, warum dieser Code nicht funktionieren will ...

Java:
public class Ratespiel {
    Spieler s1;
    Spieler s2;
    Spieler s3;
   

    public void starteSpiel (){
        s1 = new Spieler();
        s2 = new Spieler();
        s3 = new Spieler();
    }
   
    int tipp1 = 0;
    int tipp2 = 0;
    int tipp3 = 0;
   
    boolean s1hatRecht = false;
    boolean s2hatRecht = false;
    boolean s3hatRecht = false;
   
    int zielZahl = (int) (Math.random()*10); {
       
   
    while(true) {
        System.out.println("Die zu erratene Zahl ist " +zielZahl);
       
        s1.raten();
        s2.raten();
        s3.raten();
       
        tipp1 = s1.zahl;
        System.out.println("Spieler eins tippt " + tipp1);
       
        tipp2 = s2.zahl;
        System.out.println("Spieler zwei tippt " + tipp2);
       
        tipp3 = s3.zahl;
        System.out.println("Spieler drei tippt " + tipp3);
       
        if(tipp1 == zielZahl) {
            s1hatRecht = true;
        }
        if(tipp2 == zielZahl) {
            s2hatRecht = true;
        }
        if(tipp3 == zielZahl) {
            s3hatRecht = true;
        }
        if (s1hatRecht || s2hatRecht || s3hatRecht) {
            System.out.println("Wir haben einen Gewinner!");
            System.out.println("Spieler eins hat richtig geraten? " + s1hatRecht);
            System.out.println("Spieler zwei hat richtig geraten? " + s2hatRecht);
            System.out.println("Spieler drei hat richtig geraten? " + s3hatRecht);
            System.out.println("Das Spiel ist aus.");
            break;
           
        }
        else {
            System.out.println("Wir müssen nochmal spielen!");
        }
    }
} }

Code:
public class Spieler {
    int zahl = 0;
   
    public void raten(){
        zahl = (int) (Math.random() *10);
        System.out.println("Ich tippe auf die Zahl: " +zahl);
    }
}

Java:
public class SpielStarter {
    public static void main (String[] args) {
        Ratespiel spiel = new Ratespiel();
        spiel.starteSpiel();
    }
}

Der Fehler lautet:
Exception in thread "main" java.lang.NullPointerException
at Ratespiel.<init>(Ratespiel.java:28)
at SpielStarter.main(SpielStarter.java:4)

Und der Befehl: Die zu erratene Zahl ist ...
klappt auch, aber danach kommt einfach nichts mehr.
 

Joose

Top Contributor
Eine NullPointerException besagt dass du auf ein Attribut/Methode einer Variable zugreifen willst, welche nicht initialisiert wurde.
Bei deinem Code wäre dies eigentlich nur bei "s1" usw. möglich. Diese Variablen werden aber in einer Methode erstellt (welche du auch aufrufst).


Leider kann ich nichts genaueres sagen, da dieser Code, so wie du ihn hier gepostet hast, nicht kompilierbar ist.
Der Code in der Klasse Ratespiel steht einfach so da, gehört aber in eine Methode.
 

walex

Mitglied
Die NPE wird geworfen, weil s1 null ist.
Beim Aufruf des Konstruktors der Klasse Ratespiel wird nämlich erstmal der Code innerhalb der geschweiften Klammen ohne Methodennamen ausgeführt (siehe https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html).
Und zu dem Zeitpunkt ist s1 eben noch null, da erst danach starteSpiel() aufgerufen wird...

Lösung: der Methode ohne Namen einen Namen verpassen und nach starteSpiel() aufrufen.

walex
 

Maerc

Mitglied
Ich habe meinen Fehler auch gerade gefunden. Nochmal auf einfach:
Java:
[...]
boolean s1hatRecht = false;
    boolean s2hatRecht = false;
    boolean s3hatRecht = false;
 
    int zielZahl = (int) (Math.random()*10); -------> { <-------
     
 
    while(true) {
        System.out.println("Die zu erratene Zahl ist " +zielZahl);
     
        s1.raten();
        s2.raten();
        s3.raten();
[...]

Die markierte Klammer ist einfach falsch gesetzt. Sobald sie weg ist klappt es problemlos.
Danke für eure Hilfe!
 
K

kneitzel

Gast
Also die Klammer weg zu nehmen dürfte das Problem nicht behoben haben.

Ich denke eher, dass Du die schließende Klammer nach der Initialisierung der s1 - s3 Variablen ebenfalls weggenommen hast, so dass nun eine ganz lange starteSpiel Funktion entstanden ist.

Aber alles ist ok, solange es nun bei Dir funktioniert.
 

Maerc

Mitglied
Also die Klammer weg zu nehmen dürfte das Problem nicht behoben haben.

Ich denke eher, dass Du die schließende Klammer nach der Initialisierung der s1 - s3 Variablen ebenfalls weggenommen hast, so dass nun eine ganz lange starteSpiel Funktion entstanden ist.

Aber alles ist ok, solange es nun bei Dir funktioniert.
Ja, die angesprochene Klammer ist auch weg :D.
 

Maerc

Mitglied
Zwei Kosmetische Probleme habe ich aber noch. Im Moment sieht ein Teil der Ausgabe so aus:
Hat Spieler eins richtig geraten? false
Hat Spieler zwei richtig geraten? false
Hat Spieler drei richtig geraten? true

Gibt es die Möglichkeit das zum Beispiel mit einer Selbstvormulierten Antwort zu versehen?



Und ein früherer Teil der Ausgabe lautet:
Ich tippe auf die Zahl: 7
Ich tippe auf die Zahl: 1
Ich tippe auf die Zahl: 9

Kann ich das mit Arrays und Schleifen Spieler-Spezifisch gestalten? Das heißt in etwas so:
Spieler eins tippt: 7
Spieler zwei tippt: 5
Spieler drei tippt: 1
 
K

kneitzel

Gast
Du kannst die Daten in Arrays packen. Also statt s1, s2 und s3 hast du dann ein Array für die Spieler. Und dann kannst Du die Spielernamen definieren also von mir aus als fixes Array mit { "eins", "zwei", "drei" }.
Und dann kannst Du in einer Schleife die Spieler durchgehen und die Ausgabe gestalten.

Und auch die Ausgabe oben kannst Du dann entsprechend prüfen und die if bedingung würde dann mal das eine oder mal das andere ausgeben, so dass Du halt Sätze hast wie "Spieler eins hat richtig geraten" und "Spieler eins hat falsch geraten".
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
L Variablen Unerklärliche NullPointerException Java Basics - Anfänger-Themen 2
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
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
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
L Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 2
H Compiler-Fehler NullPointerException bei .length, Konstruktor fehlerhaft? Java Basics - Anfänger-Themen 3
B JRadioButton wechsel gibt NullPointerException Java Basics - Anfänger-Themen 2
L NullPointerException lösen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben