Nullpointerexception bei Doppelt verketteter Liste

Status
Nicht offen für weitere Antworten.

Nikolas

Aktives Mitglied
Hallo Ihr !

Ich habe ein kleines Problem mit meinen Java-Hausaufgaben, da ich bis jetzt begeisterter Pascal-Schreiber war (und bin)

Es geht Um Aufgabe 2. Die eigentlich Logik der Kette ist soweit kein Problem.
Das Problem liegt eher im Testen der Klasse.

Code:
public class CircularList {
	
    private ListElement current;
    
    /**
     * Erzeugt eine neue, leere Liste.
     */
    public CircularList() {
    
    ListElement current = new ListElement(0);	
    
    // Ausser dem Current gibts keine Elemente
     current.next = current;
     current.prev = current;
    }
    
  public void insert(int val) {
    	ListElement neu = new ListElement(val);
    	 neu.prev = current.prev;
    	 current.prev=neu;
    	 current.prev.next=neu; // Der Nachfolger vom ehemaligen Vorgänger von current ist das neue Element
    }

    // noch ein paar lustige Funkionen

} // circularlist


class ListElement {
    int key;                // der Inhalt des Elements
    ListElement prev, next; // Zeiger auf das vorherige und nächste Element
                            // für die doppelte Verkettung
    
    /**
     * Erzeugt ein neues Listenelement mit dem Wert v
     */ 
    ListElement(int v) {
        key = v;
    }
}
Um das zu Testen, habe ich eine weitere Klasse in einer eigenen Datei angelegt:
Code:
public class TestKlasse {
	
	public static void main(String[] args) {
	CircularList list= new CircularList();

	list.insert(5);
	// list.printAsText();
		}
}
Wenn ich das list.insert(5) nicht auskommentiere, bekomme ich die NullPointerException.

Ich gehe mal davon aus, dass es daran liegt, dass ich prev und next von current nicht initialisiert habe. Wenn ich jetzt aber z.B. für das current.prev wieder ListElement(); aufrufe, bekomme ich einen schön rekursiven Aufruf, der dann meinen Stack motiviert, auch eine Exception zu werfen.

In Pascal wäre so etwas kein Problem, nur leider kenne ich mich in der Klassenstruktur von Java noch nicht gut genug aus.

Könnte vielleicht jemand mal einen Blick drauf werfen?

Nikolas
 

nebulo

Bekanntes Mitglied
Wie sieht die printAsText() überhaupt aus? So wie ich das verstehe wird bei diesem Aufruf die NullPointerException geworfen.
 

Nikolas

Aktives Mitglied
Den Code lasse ich gar nicht ausführen, wenn die Exception kommt.

Hier ist aber mal der Code
Code:
public void printAsText(){
     ListElement dummy = new ListElement(0);
     dummy = current.next;
     
     while (!dummy.equals(current)) {
    	 System.out.print(dummy.key+" ");
     }	
    } // printAsText
 
S

SlaterB

Gast
>ListElement dummy = new ListElement(0);
> dummy = current.next;

wozu unnötig ein Objekt erzeugen?
schreibe gleich
ListElement dummy = current.next;

-----

current.prev=neu;
current.prev.next=neu;

die zweite Zeile ist das gleiche wie
neu.next=neu;
ist das gewollt?
der Kommentar
// Der Nachfolger vom ehemaligen Vorgänger von current ist das neue Element
klingt jedenfalls nach was anderem..

----------

die Exception tritt beim insert auf?
in welcher Zeile genau? die Fehlermeldung wird doch wohl die Zeile verraten?
prüfe die dortigen Objekte, welches ist null? darf es null sein?
wer sollte es wann initialisiert haben?
warum ist dies nicht geschehen? usw.
 

Nikolas

Aktives Mitglied
stimmt da habe ich ich in der Reihenfolge vertan.
Code:
current.prev.next=neu;  // Der Nachfolger vom ehemaligen Vorgänger von current ist das neue Element
    	 neu.prev= current.prev;
         neu.next=current;  
    	 current.prev=neu;
So sollte es passen.

Eine reproduzierbarer Fehler liefert der Aufruf

Code:
public class TestKlasse {
	
	public static void main(String[] args) {
	CircularList list= new CircularList();
	
	if (list.isEmpty()) {System.out.print("leer");}	
}

Hier bei wird
Exception in thread "main" java.lang.NullPointerException
at CircularList.isEmpty(CircularList.java:28)
at TestKlasse.main(TestKlasse.java:6)
ausgegeben.

Code:
 public boolean isEmpty() {
    
    if (current.equals(current.next) & current.equals(current.prev)  )  // Zeile 28
    {return true;} //else  
    {return false;}	
    }

Ich weiss nicht, woran das liegen kann, da ich diesen Code ausführen kann:
Code:
   public CircularList() {
    
    ListElement current = new ListElement(0);	
    
    // Ausser dem Current gibts keine Elemente
    current.next = current;
    current.prev = current;
      
    current.next.key=23;
    System.out.println(current.next.key);
   
    }

Aufgerufen mit
Code:
public class TestKlasse {
	
	public static void main(String[] args) {
	CircularList list= new CircularList();

}
wobei ich auch schön die 23 in meine Ausgabe bekomme...

Ich weiss nur nicht, wie ich mit dem Code, der fest vorgegeben wurde (Siehe link im ersten Post) diese Objekte für prev und next initialisieren kann, ohne einen rekursiven Aufruf zu haben.
 
S

SlaterB

Gast
> if (current.equals(current.next) & current.equals(current.prev) )
> Hier bei wird [Fehler] ausgegeben.

und, ist das das Ende deiner Bemühmungen?
hast du keine Ambition das Problem zu lösen?
ist doch kinderleicht,
erstmal Information holen:

statt
if (current.equals(current.next) & current.equals(current.prev) )
schreibst du
Code:
System.out.println("current: "+current);
if (current != null) {
  System.out.println("current.next: "+current.next);
  System.out.println("current.prev: "+current.prev);
}
boolean vergleich1 = current.equals(current.next);
boolean vergleich2 = current.equals(current.prev);

if (vergleich1 && vergleich2)
ist an so einer Ausgabe irgendwas schwieriges was du nicht hättest selber machen können?

wo tritt nun der Fehler auf, bei vergleich1 oder 2?
was ist mit den drei Objekten, werden alle drei ausgegen, ist eines davon null?

------

zwei boolean übrigens besser mit && verbinden statt mit &

------

der Fehler ist übrigens, wie ich gerade sehe:

im Konstruktor definierst du eine lokale Variable current:
ListElement current = new ListElement(0);

schreibe stattdessen
current = new ListElement(0);
um die Exemplarvariable current zu setzen
 

Nikolas

Aktives Mitglied
Code:
und, ist das das Ende deiner Bemühmungen?
hast du keine Ambition das Problem zu lösen? 
ist doch kinderleicht,
???:L Wie kommst du auf solche Aussagen? Dies ist doch ein Anfängerforum und wie ich gesagt habe, kenne ich mich mit Java noch gut genug, dass ich das Problem selbst lösen kann, da ich bis jetzt nur in Pascal geschrieben habe.

Danke für deine Hilfe.
 
S

SlaterB

Gast
na, ich schubse dich ein bisschen,
vielleicht hilft es, so dass du dir beim nächsten Problem selber helfen kannst

System.out.println() ist viel einfacher als so eine verkettete Liste,
gewöhne dich dran und die (Programmier-) Macht wird mit dir sein ;)
 
Status
Nicht offen für weitere Antworten.
Ä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
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
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

Ähnliche Java Themen

Neue Themen


Oben