Hallo, ich möchte ein Element aus einem stack Stapel mit einer methode ziehen und weiterverarbeiten. Beim weiterverarbeiten bekomme ich folgende Fehlermeldung:
Karte gezogen: 5
Exception in thread "main" java.lang.NullPointerException
at Spiel.<init>(Kartenspiel3.java:31)
at Kartenspiel3.main(Kartenspiel3.java:9)
Warum funktioniert das nicht, obwohl Objekte in der methode übergeben werden?
Wie löst man das Problem?
Karte gezogen: 5
Exception in thread "main" java.lang.NullPointerException
at Spiel.<init>(Kartenspiel3.java:31)
at Kartenspiel3.main(Kartenspiel3.java:9)
Warum funktioniert das nicht, obwohl Objekte in der methode übergeben werden?
Wie löst man das Problem?
Java:
/* Kartenspiel.java */
import java.io.*;
class Kartenspiel3 {
public static void main(String[] args) throws IOException {
Spiel spiel = new Spiel();
}
}
class Spiel {
Stapel schleckMartin = new Stapel(4);
Stapel ablageMartin = new Stapel(8);
Karte martinsKarte;
Spieler martin = new Spieler();
Spiel () {
schleckMartin.push(new Karte(7));
schleckMartin.push(new Karte(5));
martin.schleckKarte(martinsKarte, schleckMartin);
martinsKarte.print();
}
}
class Spieler {
Karte spielerKarte;
Stapel schleckSpieler;
Spieler () {
}
void schleckKarte(Karte spielerK, Stapel schleckSp) {
spielerKarte = spielerK;
schleckSpieler = schleckSp;
spielerKarte = schleckSpieler.pop();
System.out.print("Karte gezogen: ");
spielerKarte.print();
}
}
class Stapel {
private Karte[] array;
private int top = 0;
public Stapel(int nr) {
array = new Karte[nr];
}
public void push(Karte element) {
array[top++] = element;
}
public Karte pop() {
return array[--top];
}
}
class Karte {
int wert;
public Karte(int wert) {
this.wert = wert;
}
public void print() {
System.out.println(wert);
}
}