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.
Um das zu Testen, habe ich eine weitere Klasse in einer eigenen Datei angelegt:
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
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;
}
}
Code:
public class TestKlasse {
public static void main(String[] args) {
CircularList list= new CircularList();
list.insert(5);
// list.printAsText();
}
}
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