Hi,
Habe wieder mal ein Problem mit einer Verketteten Liste zur Klausurvorbereitung.
Ich bekomme bei meiner insert() Methode eine Null Pointer Exception, und verstehe einfach nicht warum.
Gegeben ist eine vorher erstellte verkettete Liste die mit Namen und erzielten Toren so aussieht:
Klose 14-->Rahn 10-->Beckenbauer 5-->Conen 4 -->null
Die Klasse mit Methoden:
Und noch die Klasse Spieler:
Und das Erbrochene der Konsole:
Exception in thread "main" java.lang.NullPointerException
at WMListe.insert(WMListe.java:132)
at WMListe.main(WMListe.java:178)
Ich blicks nicht. Finde keinen Fehler in der insert Methode. Warum sollte current.next auf Null Zeigen? Ist doch am Anfang auf das Selbe Objekt wie Liste gesetzt? Oder hab ich mal wieder einen offensichtlichen Denkfehler?
Für Hilfe sehr Dankbar
.d
Habe wieder mal ein Problem mit einer Verketteten Liste zur Klausurvorbereitung.
Ich bekomme bei meiner insert() Methode eine Null Pointer Exception, und verstehe einfach nicht warum.
Gegeben ist eine vorher erstellte verkettete Liste die mit Namen und erzielten Toren so aussieht:
Klose 14-->Rahn 10-->Beckenbauer 5-->Conen 4 -->null
Die Klasse mit Methoden:
Java:
public class WMListe {
private Spieler spieler; //data of 1 element
private WMListe next; //pointer to the following object
WMListe first; //points to the head of list
WMListe oldfirst;
public WMListe(Spieler s) {
spieler = s;
next = null;
}
public WMListe(String datei) {
first = null;
oldfirst = null;
In input = new In(datei);
while(!input.isEmpty()){
String name = input.readString();
int tore = input.readInt();
spieler=new Spieler(name,tore);
if(first==null){
first=new WMListe(spieler);
first.next=null;
}
else{
oldfirst=first;
first=new WMListe(spieler);
first.next=oldfirst;
}
}
}
public static WMListe insert(WMListe liste, Spieler s){
WMListe current=liste;
WMListe insert=new WMListe (s);
while(current!=null){
if(s.getTore()>=liste.spieler.getTore()){
insert.next=liste;
liste=insert;
}
// Zeile 131, hier meckert er rum mit einer Null Pointer Exception
else if(s.getTore()<current.spieler.getTore() && s.getTore()>=current.next.spieler.getTore()){
insert.next=current.next;
current.next=insert;
}
else if(s.getTore()<current.spieler.getTore() && current.next==null){
current.next=insert;
}
current=current.next;
}
return liste;
}
public String toString(){
String s = "";
//1) reversing the current list
WMListe current=first;
WMListe previous=null;
WMListe forward;
while(current!=null){
forward=current.next;
current.next=previous;
previous=current;
current=forward;
}
//concats the current list to a String
for(WMListe x=previous;x!=null;x=x.next){
s+=x.spieler + "\n";
}
return s;
}
//zum testen
public static void main(String[] args) {
String datei= "Spielerdaten.txt";
WMListe liste= new WMListe(datei);
Spieler klinsi= new Spieler ("Kliensmann",11);
liste=insert(liste,klinsi);
System.out.print(liste);
}
}
Und noch die Klasse Spieler:
Java:
public class Spieler {
String name; // Name des Spielers
int tore; // Anzahl der Tore
public Spieler(String name, int tore) {
this.name = name;
this.tore = tore;
}
public String getName() {
return name;
}
public int getTore() {
return tore;
}
public String toString() {
return name + " Tore:" + tore;
}
}
Und das Erbrochene der Konsole:
Exception in thread "main" java.lang.NullPointerException
at WMListe.insert(WMListe.java:132)
at WMListe.main(WMListe.java:178)
Ich blicks nicht. Finde keinen Fehler in der insert Methode. Warum sollte current.next auf Null Zeigen? Ist doch am Anfang auf das Selbe Objekt wie Liste gesetzt? Oder hab ich mal wieder einen offensichtlichen Denkfehler?
Für Hilfe sehr Dankbar
.d
Zuletzt bearbeitet: