Danke für die schnelle Antwort! Und wie prüfe ich jetzt, ob eine Variable "null" enthält? Ich könnte ja einen Standardwert, z. B. einen String "leer" einfügen. Geht es auch ohne so etwas?
Im Grunde prüfst du nur, ob die Variable anything eine Referenz enthält oder nicht. Wenn dem so ist oder nicht, reagierst du darauf. Du musst wissen: Eine NullPointerException fliegt dir nur dann, wenn du versuchst auf etwas zuzugreifen, das "null" ist oder enthält. In den obigen Beispielen greifst du auf nichts mit der null-Referenz zu, sondern prüfst nur die Referenz.
Du hast keinen inhaltlichen Zugriff wie auf eine Methode oder eine "public"-Variable.
Machst du jetzt aber so etwas:
Java:
anything.doSomething();
und anything ist null, fliegt dir eine Exception. Ansonsten nicht.
Eigentlich habe ich eine dynamische Liste, in der in next das nächste Objekt gespeichert wird. Ich muss einfach prüfen, ob die Liste ein weiteres Element enthält. Und danke!
Ich nehme mal an du sollst dir als Hausübung eine eigene Liste schreiben. Dein Code wirft dir die Exception, weil er nur funktioniert, wenn das erste Element nicht null ist.
Testest du das ganze mit einer leeren liste fliegt die Exception.
Jetzt liegt es an die Schleifenabfrage so umzuschreiben, dass im vorhinein festgestellt wird, ob das aktuelle Element null ist.
Danke für die vielen guten Antworten!
Zuerst: ich bring mir Java als Hobby bei. Zweitens: ich hab die Kapitel über Collections in meinem Buch noch nicht gelesen. Und drittens: Gibt es bei einer if(Next!=null) Abfrage nicht auch eine Exception?
Ja kann man machen. Aber ist ja keine Außnahme hier, sondern eher die Regel und das sollte man mit normalen Kontrollstrukturen abfangen und nicht mit Außnahmen.
Weil in der Schleife ([c]i.next[/c]) null dereferenziert wird, d.h. es soll auf ein Objekt zugegriffen werden, das es nicht gibt - weil die Referenz null ist. Bei dem Vergleich passiert das nicht, da hier nichts dereferenziert wird.
i.next wirft die Exception wenn i null ist, ganz einfach. Man kann keine Methoden oder Eigenschaften aufrufen, von etwas was null ist. egal, for, while
Nix fangen oder iterator, das ist ein standard Beispiel, das jeder im ersten Semester lernt.
Java:
for(i=...; i.next!=null; i=i.next)
Du musst dafür sorgen, dass an dieser stelle i nie null ist. Sollte auch nicht vorkommen, weil du ja dann gar nicht weiter gehst. Ausser das erste element ist null und das musst du in deiner Methode überprüfen und dem entsprechend handeln ;-)
Eigentlich habe ich eine dynamische Liste, in der in next das nächste Objekt gespeichert wird. Ich muss einfach prüfen, ob die Liste ein weiteres Element enthält. Und danke!
Ok danke! Ich merke, dass mir wichtige Grundlagen fehlen... Ich bring mir Java mit dem Buch "Handbuch der Java-Programmierung" bei. Kennt jemand ein besseres Buch? (Ich weiss, dass Bücher von jedem anders bewertet werden, ich suche "nur" etwas, das einem die Theorie besser/genauer aufzeigt und zeigt, was man wie und wo verwendet. Eben z. B. Null-Pointer-Exceptions etc.)