OOP Warum bekomme ich eine Null-Pointer Exception!!? :(

duxjava

Neues Mitglied
Hallo, ich bin etwas unsicher ob mir überhaupt jemand helfen wird, aber falls doch jemand bereit ist habe ich folgendes Problem:

Es handelt sich ein simples Telefonlistenprogramm in Java mit nur 2 Klassen. Es geht einzig um das Üben und Verstehen der Zeiger.

Programm besteht aus der Klasse "TelefonlistenEintrag" und einmal "Telefonliste". In der Telefonliste gibt es die Methode "addEintrag", womit man einen neuen Telefonlisten-Eintrag generieren kann. In dieser Methode muss ich allerdings erst einmal mit "getEintragAusListe" Prüfen, ob ein Eintrag exisiert und falls ja, zurückliefern. Und mit dieser Private Methode habe ich auch mein Problem. Ich hoffe ihr könnt mir erklären, warum der untere Code (meiner) nicht funktioniert.

Telefonlisteneintrag
TelefonlistenKopf; //Zeiger auf das erste Objekt, das erzeugt wird

//////////////////private Methode//////////////////////
private Telefonlisteneintrag getEintragAusListe(String name) {
/* Liefere das Eintrags-Objekt aus der Liste oder null, falls nicht
vorhanden */

Telefonlisteneintrag aktEintrag = telefonlistenKopf;
boolean gefunden = false;

/* Liste durchlaufen, bis das gesuchte Element gefunden ist */
while ((aktEintrag != null) && !gefunden) {
if (aktEintrag.getName().equals(name)) {
gefunden = true;
} else {
aktEintrag = aktEintrag.getNachfolger();
}
}

return aktEintrag;
}

....................................................................................................
Bei meiner Version bekomme ich allerdings eine Null Pointer Exception:

///////private Methode///////
private Telefonlisteneintrag getEintragAusListe(String name){

Telefonlisteneintrag aktEintrag = telefonlistenKopf;
boolean gefunden = false;

if(aktEintrag != null){

while(!gefunden){
if(aktEintrag.getName().equals(name)){
gefunden = true;
}else{
aktEintrag = aktEintrag.getNachfolger();
}
}

}
return aktEintrag;
}



Woran kanns liegen?

Vielen Dank im Voraus!
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
Java:
private Telefonlisteneintrag getEintragAusListe(String name) {
    Telefonlisteneintrag aktEintrag = telefonlistenKopf;
    boolean gefunden = false;

    if(aktEintrag != null) {
        while(!gefunden) {
            if(aktEintrag.getName().equals(name)) {
                gefunden = true;
            } else {
                aktEintrag = aktEintrag.getNachfolger();
            }
        }
     }

    return aktEintrag;
}

Ich vermute mal ganz stark, dass der aktEintrag durch "getNachfolger()" zu null wird und dann getName() die Exception schmeisst, da du eine Funktion auf einem null-"Objekt" aufrufen möchtest. Das geschieht, wenn der Eintrag quasi noch nicht enthalten ist und du alle Einträge prüfst. Zwangsläufig gibt es keinen Nachfolger und die While-Schleife ist noch nicht beendet, da du dich an "gefunden" orientierst. Du solltest zusätzlich in der Schleife prüfen ob aktEintrag noch gültig ist.

Ach ja, bitte verwende beim nächsten mal die JAVA - Tags für deinen Code :)
 
Zuletzt bearbeitet:

duxjava

Neues Mitglied
Ich danke dir! :) Könnte mir jemand einen großen Gefallen tun und mir evtl einen Tipp geben, was ich genau an meinem Code ändern müsste? Ich habe die Begründung oben nicht 100% nachvollziehen können, da ich folgendes dachte:

Code:
[COLOR=#000000][B]if[/B][/COLOR][COLOR=#009900]([/COLOR]aktEintrag [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900]) //WENN ein Telefonlisten-Eintrag Existiert, dann soll mit der while Schleife der Eintrag gesucht werden.
[/COLOR]
           Und hier(es existiert also ein Telefon-Eintrag):
 [COLOR=#000000][B]while[/B][/COLOR][COLOR=#009900]([/COLOR][COLOR=#339933]![/COLOR]gefunden[COLOR=#009900])[/COLOR] [COLOR=#009900]{     //finde den Eintrag, solange NICHT gefunden:[/COLOR]
            [COLOR=#000000][B]if[/B][/COLOR][COLOR=#009900]([/COLOR]aktEintrag.[COLOR=#006633]getName[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]equals[/COLOR][COLOR=#009900]([/COLOR]name[COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]  [COLOR=#00ff00]//Wenn der gesuchte Name mit der aus der Liste übereinstimmt, while beenden[/COLOR]

                gefunden [COLOR=#339933]=[/COLOR] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#009900]}[/COLOR] [COLOR=#000000][B]else[/B][/COLOR] [COLOR=#009900]{[/COLOR]                               [COLOR=#00ff00] //andernfalls: gehe mit Zeiger zum nächsten Eintrag.[/COLOR]

                aktEintrag [COLOR=#339933]=[/COLOR] aktEintrag.[COLOR=#006633]getNachfolger[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#009900]}[/COLOR]
}

Habe ich da etwas übersehen? ;( Wäre unendlich Dankbar wann mir jemand meinen "Code" anpassen könnte, natürlich anders als das erste Beispiel.
Ich verstehe vorallem nicht, wie es zum "Null Pointer" kommt, da die while Schleife doch erst beginnt, WENN ein eintrag existiert:bahnhof:

Schönen Abend an alle.
Viele Grüße





 
Zuletzt bearbeitet:

JCODA

Top Contributor
Richtig die while-schleife wird erst aufgerufen wenn ein listenelement exisitert. Aber du prüfst nicht wann die liste fertig ist...

Java:
private Telefonlisteneintrag getEintragAusListe(String name) {
    Telefonlisteneintrag aktEintrag = telefonlistenKopf;
    boolean gefunden = false;
 
    
        while(!gefunden && aktEintrag != null) {
            if(aktEintrag.getName().equals(name)) {
                gefunden = true;
            } else {
                aktEintrag = aktEintrag.getNachfolger();
            }
        }
    
 
    return aktEintrag;
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Eclipse IDE - Wie bekomme ich eine ältere Version Java Basics - Anfänger-Themen 6
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
A Wie bekomme ich zwei Strings in eine ArrayList Java Basics - Anfänger-Themen 4
G Variablen Warum bekomme ich da eine Fehlermeldung? Java Basics - Anfänger-Themen 3
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
A Eine Javaaufgabe die ich nicht auf die Reihe bekomme. Java Basics - Anfänger-Themen 7
P wie bekomme ich ein array in eine string variable Java Basics - Anfänger-Themen 11
L Bekomme ständig eine ArrayOutBoundsException Java Basics - Anfänger-Themen 4
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
DrahtEck Warum bekomme ich ein "minus" ausgegeben Java Basics - Anfänger-Themen 2
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
M Was muss ich verändern damit ich es so ausgegeben bekomme wie auf dem Foto? Java Basics - Anfänger-Themen 2
A Wieso bekomme ich hier zwei unterschiedliche Ausgaben? Java Basics - Anfänger-Themen 6
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
L Wie vergrößere ich ein Rechteck in alle Richtungen um eins und bekomme dessen Rand? Java Basics - Anfänger-Themen 2
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
Henri run und bekomme ich nichts Java Basics - Anfänger-Themen 12
U Wie bekomme ich bei der Ausgabe das erste Komma weg Java Basics - Anfänger-Themen 8
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
Thallius Wie bekomme ich den Country code Java Basics - Anfänger-Themen 4
T Klassen wie funktionieren Streams, warum bekomme ich int zurück? Java Basics - Anfänger-Themen 2
D Wie bekomme ich meine Ausgabe in Form von "2^x" hin? Java Basics - Anfänger-Themen 1
G Wie bekomme ich alle Ausgaben von runTime.exec() Java Basics - Anfänger-Themen 7
J Compiler-Fehler Warum bekomme ich fehler angezeigt?? Java Basics - Anfänger-Themen 3
X Ich bekomme die Java Communications Api nicht installiert Java Basics - Anfänger-Themen 9
S Bei double Methode bekomme ich Infinity Java Basics - Anfänger-Themen 2
El_Lobo Threads bekomme Thread nicht abgewürgt mit interrupted() Java Basics - Anfänger-Themen 3
W wie bekomme ich die .class Dateien ausgelesen Java Basics - Anfänger-Themen 11
sylo Bekomme Thread nicht gleichzeitig gestartet. Java Basics - Anfänger-Themen 12
N Reguläre Ausdrücke - bekomme Suchkriterium nicht hin Java Basics - Anfänger-Themen 3
radiac Wieso bekomme ich kein Bild drauf??? Java Basics - Anfänger-Themen 13
S regular expression - bekomme leerzeichen nicht raus Java Basics - Anfänger-Themen 3
T Mehr Anfänger geht nicht - Wie bekomme ich das zum laufen! Java Basics - Anfänger-Themen 6
G Woher bekomme ich passende .jar-Archive Java Basics - Anfänger-Themen 8
D Bekomme das nicht hin (set / get Methoden) Java Basics - Anfänger-Themen 22
F Wie bekomme ich mein "Fenster"? Java Basics - Anfänger-Themen 3
D bekomme Bild nicht eingefügt Java Basics - Anfänger-Themen 6
S Warum bekomme ich diese Exception ? Java Basics - Anfänger-Themen 3
J bekomme keine ausgabe! Java Basics - Anfänger-Themen 40
S Bekomme Keine Ausgabe Java Basics - Anfänger-Themen 9
T Bekomme es nicht hin Java Basics - Anfänger-Themen 10
T Bekomme Fehler mit Bubblesort Java Basics - Anfänger-Themen 2
E Wo bekomme ich das javax.swing.* package her? Java Basics - Anfänger-Themen 3
M Bekomme Programm nicht zum laufen HILFEEEE! Java Basics - Anfänger-Themen 28
G wie bekomme ich das javax.jws.* package in den JBuilder ? Java Basics - Anfänger-Themen 7
R Woher bekomme ich das aktuelle Jahr oder auch Datum? Java Basics - Anfänger-Themen 4
E Wie bekomme ich -Xmx512m in JAR-Datei Java Basics - Anfänger-Themen 13
E bekomme was vom Typ Object -> und nu? Java Basics - Anfänger-Themen 6
V Beim lesen aus einer Datei bekomme ich fehlerhafte Strings. Java Basics - Anfänger-Themen 2
H Warum bekomme ich einenen noclassdeffounderror ? [erledigt] Java Basics - Anfänger-Themen 7
P File Object, wie bekomme ich den Datei Typ Java Basics - Anfänger-Themen 6
M Wie bekomme ich einen Bild in einem JPaneln inden background Java Basics - Anfänger-Themen 3
I Wie bekomme ich diesen Fehler weg? Java Basics - Anfänger-Themen 5
megachucky Woher bekomme ich Java (außer aus dem netz) ? Java Basics - Anfänger-Themen 12
8 Wie bekomme ich einen Thread angehalten der blokiert ist? Java Basics - Anfänger-Themen 8
G Problem mit JPanel, bekomme keine Anzeige! Java Basics - Anfänger-Themen 4
S Wie bekomme ich absolute Werte (Betrag einer Zahl)? Java Basics - Anfänger-Themen 5
B 4 double Werte sind gegeben - wie bekomme ich den größten? Java Basics - Anfänger-Themen 8
S Bekomme Fehlermeldungen nicht weg ! :-| Java Basics - Anfänger-Themen 5
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
G Wie wartet man bis ein URL eine Antwort zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
M mit Maven eine ausführbare Jar bauen Java Basics - Anfänger-Themen 7
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
S Eine Idee umsetzen ganz schnell!? Java Basics - Anfänger-Themen 68
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Warum muss man manchmal in der RUnmethode sleep in eine schleife tun? Java Basics - Anfänger-Themen 9
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben