Hilfe bei java.lang.NullPointerException?

3 Antworten

Wenn der Text der Datei wie du sagst ist:

 6JavaKlasseObjektMethodeAttributVererbung

Ich vermute der Fehler liegt darin, das du 

int anzahl = Integer.parseInt(in.readLine());
versuchst.  in.readLine() liest dabei die ganze Zeile, nicht nur das erste Zeichen. Daran dürfte es liegen, das Integer.parseInt() überhaupt funktioniert dann wundert mich allerdings. Naja schau dir am besten noch mal die Dokumentation des BufferedReader an. Der Fehler ist zumindest dann, das das Array woerter nicht korrekt initialisiert wurde.

Eine Nullpointer Exception tritt fast immer auf einer Zeile auf, wo der Punkt Operator (.) verwendet wird.

Z. B.

Object o;

o = null;

o.tuEtwas; // <-- hier, ist o Null

In der Regel ist es die Referenz links vom Punkt, die eben nicht auf ein Objekt, sondern auf "null" zeigt.

In Deinem Fall kann es aber auch daher kommen, dass in.readLine() eben null zurück gibt. Z. B. bei einer leeren Datei. Dann darf "Integer.parseInt(null)" auch eine Nullpointer Exeption liefern.

Schau mal was "in.readLine()" zurück gibt. Z. B

String s = in.readLine();

System.out.println(s);

// und erst dann

Integer.parseInt(s);

Könnte es sein, dass die Variable "file" ("beispiel.txt") nicht den korrekten Pfad enthält zur Datei enthält? Eine NullPointerException tritt dann auf, wenn etwas angegebenes nicht existiert. "beispielt.txt" scheint nicht zu existieren falls ich mich nicht irre.


Lizett 
Fragesteller
 05.12.2015, 15:14

doch beispiel txt existiert und ist im richtigen ordner

btw der inhalt der datei:

6JavaKlasseObjektMethodeAttributVererbung

momentmal was mir grade auffällt kann es sein das der die wörter ja garnicht unterscheiden kann und in 0 alles schreibt und in 1 bis 5 nichts?


0
ImTommey  05.12.2015, 15:15
@Lizett

Steht in der Konsole keine Zeilennummer des Fehlers?

0
Lizett 
Fragesteller
 05.12.2015, 15:16
@ImTommey

momentmal was mir grade auffällt kann es sein das der die wörter ja garnicht unterscheiden kann und in 0 alles schreibt und in 1 bis 5 nichts?

0
ImTommey  05.12.2015, 15:18
@Lizett

Was auch nützlich wäre ist keinen relativen Pfad anzugeben, sondern den kompletten einlesen("C:\...\...\...\beispiel.txt"); Ersetze die ... mit dem Pfad.

0
ImTommey  05.12.2015, 15:22
@Lizett

Mit BufferedReader kenne ich mich nicht sonderlich gut aus, aber inkrementiert die Funtion in.readLine() nicht die Zeilennummer, aus welcher gelesen wird? Falls das so ist - und du zwischen den Wörtern keinen Zeilenumbruch gemacht hast - hat die Zeile 2 keinen Wert, somit null. Wenn du nun versuchst einen Wert der Klasse Wort() zuzuweisen, gibt es keinen Wert. Somit eine NullPointerExeption.

0
Lizett 
Fragesteller
 05.12.2015, 15:22
@ImTommey

Der Fehler kommt in dieser Zeile:

woerter[i] = new Wort(in.readLine());

und an dem Speicherpfad liegt es nicht. Ich habe kurz die Datei umbenannt und dann kam der Fehler:

Exception in thread "main" java.io.FileNotFoundException: beispiel.txt (Das System kann die angegebene Datei nicht finden)

0
ImTommey  05.12.2015, 15:25
@Lizett

Versuche den Dateipfad zu finden. Falls du in eclipse die Datei hast, musst du mit einer anderen Weise auf die Datei zugreifen, weil die Datei nach der Kompilierung von eclipse doch virtuell ist oder nicht?

0
Lizett 
Fragesteller
 05.12.2015, 15:35
@ImTommey

habe es eben auch mit der Linux Konsole ausprobiert, aber da kommt das selbe. ich glaube nicht das es an dem pfad liegt da in den letzten übungen ähnliches vorkam und es nie einen Fehler gab?

0
TUrabbIT  05.12.2015, 15:48

Der Pfad ist kein Problem, dann gäbe es eine andere Exception, nämlich FileNotFoundException oder I/O-Exception

0
Lizett 
Fragesteller
 05.12.2015, 15:55

es geht jetzt ... ich habe bei dem objekt wort etwas noch nicht initialisiert und deshalb konnte er es nicht erstellen -.- hätte man ja auch in den fehler packen können aber gut trotzdem danke ;)

0