NullPointerException

Status
Nicht offen für weitere Antworten.
A

abi07

Gast
hi...
ich habe ein problem und zwar:

Code:
public class List{

       private List first;
       private List last;
       private List current;
       private List next;
       private List previous;
       private Object content;

       


       public List(){

          first.next = last;    -->  hier ist das Problem; es wird immer eine Nullpointerexception geworfen, wie kann ich
          last.previous = first;                vermeiden???
          current = first;

       }
...

bitte helft mir so schnell wie möglich

danke schön
 
A

abi07

Gast
hi, danke für die schnell antwort.

aber ich habs mehrmals versucht.. irgendwie klappt das nicht:

Code:
public List(){
          first = new List();
          last = new List();
          first.next = last;    
          last.previous = first;           
          current = first;

       }

macht man das so? oder irgendwie anders?

kannst du mir bitte einen tipp geben?

vielen dank
 
S

SlaterB

Gast
aber vorsichtig mit dieser Initialisierung,
so im Konstruktor wäre das bös:

Liste A erstellt eine Exemplarvariable A.first
Liste A.first erstellt eine Exemplarvariable A.first.first
Liste A.first.first erstellt eine Exemplarvariable A.first.first.first
....


> irgendwie klappt das nicht:

WAS klappt nicht?
 
A

abi07

Gast
Code:
public List(){
          first = new List();
          last = new List();
          first.next = last;   
          last.previous = first;           
          current = first;

       }

wenn ich first und last so initialisiere, wird immernoch nullpointerexception geworfen
 
S

SlaterB

Gast
häh?, wenn jemand eine Bombe baut aber keine Bombe haben will,
was soll man dann sagen außer 'baue keine Bombe'?


ein Objekt sollte nie ein Objekt des gleichen Typs erstellen,
es sei denn man kennt sich ein bisschen aus

was du stattdessen machen kannst, hängt davon ab was du willst,
was das ist weiß ich ja nicht..,
das einfachste ist, alles wegzulassen..

> wenn ich first und last so initialisiere, wird immernoch nullpointerexception geworfen

weil first.next null ist...
 

Marco13

Top Contributor
Was soll denn erstellt werden, wenn du
List list =new List();
aufrufst?

Ich würde erwarten, dass
list.first dann erstmal 'null' ist.

Vielleicht ist sowas wie
Code:
       public List(){
          first = this;
          last = this;
          
          first.next = last;
          last.previous = first;
          current = first;
       }
ein möglicher Ansatz?

Üblicherweise werden solche Datentypen streng algebraisch spezifiziert (ja, "Algebra" ist das Zeuch aus Mathe). Wenn man weiß, wie sich die Klasse verhalten soll, kann man sie auch schreiben. Ansonsten - schreibt man "irgendwas".
 
S

SlaterB

Gast
oh, und mein Hinweis
> weil first.next null ist...
war falsch, first.next kann ja ruhig null sein,

wo genau tritt die NullPointerException auf
wenn es nicht vorher schon einen StackOverflow gibt wie ich vermute ;)
 
A

abi07

Gast
Dokumentation der Methoden der Klasse List
Konstruktor List()
Nachher Eine leere Liste ist angelegt. Der interne Positionszeiger steht vor der leeren Liste.

Anfrage
isEmpty(): boolean
Nachher
Die Anfrage liefert den Wert true, wenn die Liste keine Elemente enthält,
sonst liefert sie den Wert false.
Anfrage
isBefore(): boolean
Nachher
Die Anfrage liefert den Wert true, wenn der Positionszeiger vor dem ersten
Listenelement oder vor der leeren Liste steht, sonst liefert sie den Wert fal-
se.
Anfrage
isBehind(): boolean
Nachher
Die Anfrage liefert den Wert true, wenn der Positionszeiger hinter dem letzten
Listenelement oder hinter der leeren Liste steht, sonst liefert sie den
Wert false.
Auftrag
next()
Nachher
Der Positionszeiger ist um eine Position in Richtung Listenende weiterger
ückt, d.h. wenn er vor der Liste stand, wird das Element am Listenanfang
zum aktuellen Element, ansonsten das jeweils nachfolgende Listenelement.
Stand der Positionszeiger auf dem letzten Listenelement, befindet er sich
jetzt hinter der Liste. Befand er sich hinter der Liste, hat er sich nicht verändert.
Auftrag
previous()
Nachher
Der Positionszeiger ist um eine Position in Richtung Listenanfang weiterger
ückt, d.h. wenn er hinter der Liste stand, wird das Element am Listenende
zum aktuellen Element, ansonsten das jeweils vorhergehende Listenelement.
Stand der Positionszeiger auf dem ersten Listenelement, befindet er
sich jetzt vor der Liste. Befand er sich vor der Liste, hat er sich nicht verändert.
Auftrag
toFirst()
Nachher
Der Positionszeiger steht auf dem ersten Listenelement. Falls die Liste leer
ist befindet er sich jetzt hinter der Liste.
Auftrag
toLast()
Nachher
Der Positionszeiger steht auf dem letzten Listenelement. Falls die Liste leer
ist befindet er sich jetzt vor der Liste.
Anfrage
getItem(): Object
Nachher
Die Anfrage liefert den Wert des aktuellen Listenelements bzw. null, wenn
die Liste keine Elemente enthält, bzw. der Positionszeiger vor oder hinter
der Liste steht.
Auftrag
update (Object pObject)
Vorher Die Liste ist nicht leer. Der Positionszeiger steht nicht vor oder hinter der
Liste.
Nachher Der Wert des Listenelements an der aktuellen Position ist durch pObject
ersetzt.

ich will ja eine verkettete liste programmieren nach dieser dokumentation.

das problem ist, das diese liste als elemente Objekte von der Klasse liste enthalten soll.

ich habe eigentlich alle methoden programmiert, und habe auch ein testprogramm geschrieben, wobei schon bei dem konstruktior nullpointerexception geworfen wird :(


Code:
import java.util.NoSuchElementException;

public class List{
        private List first;
       private List last;
       private List current;
       private List next;
       private List previous;
       private Object content;

       


       public List(){


          first.next = last;
          last.previous = first;
          current = first;

       }

       public boolean isEmpty(){
         if(first.next == last){
           return true;
         }

         else{
           return false;
         }
       }

       public boolean isBefore(){
         if(current == first){
           return true;
         }

         else{
           return false;
         }
       }

        public boolean isBehind(){
          if(current == last){
            return true;
          }

          else{
            return false;
          }
        }

        public void next(){
          if(!this.isBehind()){
            if(this.isBefore()){
              current = first.next;
            }

            else{
              current = current.next;
            }
          }
        }

        public void previous(){
          if(!this.isBefore()){
            if(this.isBehind()){
              current = last.previous;
            }

            else{
              current = current.previous;
            }
          }
        }

        public void toFirst(){
          if(!this.isEmpty()){
            current = first.next;
            }
            else {
              current = last;
            }
        }

        public Object getItem(){
          if(!this.isEmpty()){
            Object cur = current.content;
             return cur;
          }
          else{
            return null;
          }

        }

        public void update(Object obj){
          if(!this.isEmpty()){
            if(this.isBefore() || this.isBehind()){
              throw new NoSuchElementException("update ausserhalb!!!");
              }

              else{
                List help = new List();
                help.content = obj;
                help.previous = current.previous;
                help.next = current.next;
                current = help;
              }

            }
            else{
              throw new NoSuchElementException("Liste leer!!!");
            }
        }

        public void insertBefore(Object obj){
          if(!this.isBefore()){
              List help = new List();
              help.content = obj;
              help.previous = current.previous;
              current.previous = help;
              help.next = current;

          }

          else{
            throw new NoSuchElementException("insert before!!!");
          }
        }

        public void insertBehind(Object obj){
          if(!this.isBehind()){
                List help = new List();
                help.content = obj;
                help.next = current.next;
                current.next.previous = help;
                current.next = help;
                help.previous = current;

                }

            else{
              throw new NoSuchElementException("insert behind!!!");
            }

          }


        public void delete(){
          if(this.isBefore() || this.isBehind()){
            throw new NoSuchElementException("delete ausserhalb!!!");
          }

          else{
            current.previous.next = current.next;
            current.next.previous = current.previous;

          }

        }

        public void toLast() {
     if(!this.isEmpty()){
       current = last.previous;
     }
     else{
       current = first;
     }
   }

}
 
S

SlaterB

Gast
naja, nun hast du ja wieder

first.next = last;
wobei first null ist, also da ist die Exception doch klar

verwende zunächst diesen Konstruktor:
public List(){
}

falls irgendwann mal was im Konstruktor getan werden muss,
dann kannst du es immer noch einfügen,

im Moment sehe ich keinen Anlass dazu, oder warum willst du da irgendwas setzen?
dass die Liste selber wieder Listen enthält ist durchaus machbar,
du darfst nur nicht im Konstruktor Listen erzeugen, das gibt eine Endlosschleife
 

Marco13

Top Contributor
Also, der Beschreibung nach würde ich im Default-Konstruktor erstmal alles auf 'null' setzen - höchstens noch ein
current = this;
rein. Evtl. musst du dann aber einige andere Methoden ein bißchen ändern.
 
R

Roar

Gast
wenn das eine verkettete liste werden soll ist ein:
public class List{
private List first;
private List last;
private List current;
private List next;
private List previous;
einfach sinnlos, und was wird dir auch auffallen, wenn du dein script nochmal aufmerksam durchliets und/oder drüber nachdenkst was da in deiner klasse steht
ab.gif
 
S

SlaterB

Gast
noch was allgemeines:
es ist schlecht, die Verknüpfungen der Liste in den enthaltenen Objekten zu speichern (next, previous)

stell dir vor, du möchtest ein Objekt in zwei verschiedenen Listen an unterschiedlichen Positionen speichern,
beim Einfügen in die zweite Liste entfernst du das Objekt aus der ersten oder schlimmer noch:
einer der beiden Links (next, previous) zeigt auf ein Element der ersten Liste, der andere auf die zweite Liste,

deshalb verwendet man normalerweise Entry-Objekte, die pro Liste eindeutig sind und die Verknüpfung regeln,
nach außen sind diese nicht sichtbar,
die eigentlichen Elemente sind dann einfach in einem Entry abgelegt und müssen keine Vernüpfungs-Links enthalten

edit:
lange Rede und dann sehe ich dass du das ja schon so machst:
List help = new List();
help.content = obj;

dann ist es aber merkwürdig, das du für die Liste selber sowie die einzelnen Listenglieder die gleiche Klasse nimmst..,
(oder ist das vorgegeben?, ich lese mal lieber nicht die Aufgabenstellung weiter ;) )
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
T imagej-server NullPointerException Allgemeine Java-Themen 1
L Methoden NullpointerException Allgemeine Java-Themen 5
B OOP Auslöser für NullPointerException Allgemeine Java-Themen 3
I Vererbung Nicht erklärliche NullPointerException Allgemeine Java-Themen 7
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
F Input/Output NullPointerException with Apache POI Allgemeine Java-Themen 7
P wiedermal NullPointerException Allgemeine Java-Themen 2
kodela NullPointerException Allgemeine Java-Themen 2
L Variablen NullPointerException (RSA) Allgemeine Java-Themen 2
B NullPointerException bei @Inject JSF Allgemeine Java-Themen 0
Arif Probleme mit NullPointerException Allgemeine Java-Themen 2
G String an Arduino senden NullPointerException in PrintWriter Allgemeine Java-Themen 6
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
R NullPointerException Ohne Grund Allgemeine Java-Themen 5
D ByteBuffer getInt NullpointerException Allgemeine Java-Themen 4
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
T Compiler-Fehler NullpointerException! Allgemeine Java-Themen 7
A Methode ergibt Java NullpointerException. Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
L NullPointerException bei Instanzvarialen Allgemeine Java-Themen 3
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
M JSON NullPointerException Allgemeine Java-Themen 5
M NullpointerException Allgemeine Java-Themen 2
L Eclipse NullPointerException Allgemeine Java-Themen 6
M Fitness-Rechner: NullPointerException Allgemeine Java-Themen 7
G Thread erzeugt nicht plausible NullPointerException Allgemeine Java-Themen 7
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
K Unerklärliche nullpointerexception Allgemeine Java-Themen 6
C Was bekomme ich eine Nullpointerexception? (Apache POI) Allgemeine Java-Themen 3
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
K 3Dimensionales Feld - NullPointerException Allgemeine Java-Themen 2
J Compiler-Fehler NullPointerException Allgemeine Java-Themen 12
T Compiler-Fehler NullPointerException bei ADT LinkedTree Allgemeine Java-Themen 31
P Beim sortieren nullpointerexception Allgemeine Java-Themen 12
3 MP3-Finder wirft NullPointerException Allgemeine Java-Themen 13
M NullPointerException MenuItem Allgemeine Java-Themen 7
S Dialog einblenden bei NullPointerException Allgemeine Java-Themen 5
T DefaultTableModel NullPointerException Allgemeine Java-Themen 7
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
B NullPointerException ohne Angabe Allgemeine Java-Themen 5
F NullPointerException aber warum ? Allgemeine Java-Themen 9
F Array NullPointerException Allgemeine Java-Themen 26
B NullPointerException bei Wertzuweisung Allgemeine Java-Themen 3
C NullPointerException Allgemeine Java-Themen 9
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
O NullPointerException (wohl Denkfehler) Allgemeine Java-Themen 5
N Warum nullPointerException? Allgemeine Java-Themen 13
N Generics-NullpointerException Allgemeine Java-Themen 7
J NullPointerException mit HashMap Allgemeine Java-Themen 2
B NullPointerException bei new XStream() Allgemeine Java-Themen 2
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
J NullPointerException bei JasperReports Allgemeine Java-Themen 2
V NullPointerException bei Vector Allgemeine Java-Themen 2
G Warum kommt hier NullPointerException? Allgemeine Java-Themen 3
G NullPointerException Allgemeine Java-Themen 5
R Immer wieder NullPointerException Allgemeine Java-Themen 2
M NullPointerException Allgemeine Java-Themen 4
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
G NullPointerException, aber warum? Allgemeine Java-Themen 10
G NullPointerException problem Allgemeine Java-Themen 30
mhauert NullPointerException bei Zugriff auf JNI Objekt Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
T NullPointerException nach Java Update Allgemeine Java-Themen 4
G NullPointerException Allgemeine Java-Themen 6
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
H nullPointerException bei [ArrayList<String>.add(.)] Allgemeine Java-Themen 3
H NullPointerException Allgemeine Java-Themen 10
P NullPointerException Allgemeine Java-Themen 8
A NullPointerException, Thread soll Thread steuern Allgemeine Java-Themen 2
MQue Sichtbarkeit/HashMap/NullPointerexception Allgemeine Java-Themen 2
MQue NullPointerException Allgemeine Java-Themen 17
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
A NullPointerException Allgemeine Java-Themen 11
G Methode mit Schleifen NullPointerException Allgemeine Java-Themen 2
B Pobleme mit NullpointerException Allgemeine Java-Themen 13
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
S NullPointerException beim Laden von BMPs Allgemeine Java-Themen 3
B java.lang.NullPointerException Allgemeine Java-Themen 11
M NullPointerException bei Subklasse ohne MediaTracker Allgemeine Java-Themen 12
G Problem mit NullPointerException Allgemeine Java-Themen 5
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
V Button schließen - NullPointerException Allgemeine Java-Themen 6
V NullPointerException Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben