NullPointerException beim Schreiben einer ArrayList in eine Datei

ZxSpectrum

Mitglied
Hallo liebe Community,

Ich stehe verzweifelt vor einem Problem, das ich leider nicht eigenständig lösen kann. Ich habe schon viele Wege ausprobiert, aber leider lande ich immer am selben Ausgangspunkt.

Mein Problem ist folgendes:
1. Ich möchte eine Datei zeilenweise einlesen und in ArrayList ablegen.
Java:
    public static ArrayList<String> schreiben(String element){

        file = new File("Highscore.txt");

        try {

            writer = new FileWriter(file ,true);//Hängt ans Ende der Datei, wenn vorhanden

            writer.write(element); //Element aus der ArrayList wird in die Datei geschrieben      
          
            writer.write(System.getProperty("line.separator"));//Zeilenumbruch

            writer.flush();

            // Schliesst den Stream
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return highscore;
    }//schreiben

    public static ArrayList<String> lesen(String element) throws IOException{

        FileReader fr = new FileReader("Highscore.txt");
        BufferedReader br = new BufferedReader(fr);

        while (br.readLine()!=null){
            element = br.readLine();//jede Zeile im tmp String abspeichern
//            highscore.add(br.readLine());//War ein Versuch einer alternativen lösung
            highscore.add(element);//Jede Zeile wird zu Arraylist "highscore" geäddet.
        }//while
      
        br.close();
        return highscore;

    }//public static void lesen

2. Ich wollte diese Werte in dem ArrayList anschließend sortieren.
Java:
Collections.sort(highscore);

3. Und das ganze wieder in die Datei Highscore.txt geordnet reinschreiben.
Java:
public static ArrayList<String> schreiben(String element){

        file = new File("Highscore.txt");

        try {

            writer = new FileWriter(file ,false);//Hängt ans Ende der Datei, wenn vorhanden

            writer.write(element); //Element aus der ArrayList wird in die Datei geschrieben      
          
            writer.write(System.getProperty("line.separator"));//Zeilenumbruch

            writer.flush();

            // Schliesst den Stream
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return highscore;
    }//schreiben

Und nu so sieht meine Main Methode aus:
Java:
        //***********HIGHSCORE*********
        ScoreWriter.lesen(element);//Hier sollten die Daten aus der Datei Highscore.txt eingelesen werden
      
        element = Methods.spielModus(prompt, zufallsZahl, element) + " " + auswahl;//tmp Speicher für die Werte aus der zuletzt gespielten Runde
        highscore.add(element);//Der aktuelle Wert vom Durchlauf des Programms sollte hinten an die Liste dran gehängt werden
      
        Collections.sort(highscore);//Die ArrayList sortieren

        System.out.println("inhalt der Liste");//Hier wird Kontrollweise der Inhalt der Liste ausgegeben
        for (String count: highscore) {
            System.out.println(count);
        }

        for (int i = 0; i < highscore.size(); i++) {
            element = highscore.get(i);
            ScoreWriter.schreiben(element);  
        }
        //***********HIGHSCORE*********

Nun, das Problem liegt daran, dass die Werte nicht sauber eingelesen werden, anstatt den ersten Eintrag erscheint "null" und beim schreiben in die Datei wird eine NullPointerException geschmissen.

Kann mir jemand von euch helfen?

Vielen Dank im Voraus

Liebe Grüße

ZxSpectrum
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Java:
  public static ArrayList<String> schreiben(String element){

Ich finde es unsinnig das eine Methode die Daten in eine Datei schreibt etwas zurückgibt.
Wenn auch nur ob das schreiben erfolgreich war oder nicht, aber keine ArrayList.

Und wenn ich mir den Inhalt deiner "schreiben" Methode anschaue, hat es auch keinen Sinn.
==> Rückgabewert entfernen und void verwenden

Nun, das Problem liegt daran, dass die Werte nicht sauber eingelesen werden, anstatt den ersten Eintrag erscheint "null" und beim schreiben in die Datei wird eine NullPointerException geschmissen.
Java:
while (br.readLine()!=null) {
     element = br.readLine();   //jede Zeile im tmp String abspeichern
     highscore.add(element);     //Jede Zeile wird zu Arraylist "highscore" geäddet.
   }

Kann mir jemand von euch helfen?

Dein Problem liegt beim Einlesen in der while-Schleife.
In der Bedingung rufst du "readLine" auf und es wird eine Zeile eingelesen. Wenn diese != null ist betritts du die while-Schleife.
Dort liest du mit "readLine" wieder eine Zeile ein, nicht aber dieselbe wie bei der Bedingung.
=> Du prüfst jede 2.Zeile auf != null und speicherst nur jede 2.Zeile in deiner ArrayList.

Lösung: Deklariere eine String Variable welche als Zwischenspeicher für die ausgelesene Zeile dient. Diese Variable prüfst du in der Bedingung auf != null und mit dieser Variable arbeitest du in der Schleife. Am Ende der Schleife liest du die nächste Zeile.
 

JStein52

Top Contributor
Du liest doch immer zwei Zeilen ein:

Code:
        while (br.readLine()!=null){
            element = br.readLine();//jede Zeile im tmp String abspeichern
einmal eine in der while-Bedingung und dann die nächste explizit ! Hängt dein Problem damit zusammen ?
 

Jardcore

Top Contributor
Java:
String line = "";
while((line= br.readLine()) != null) {
    System.out.println(line);
}
Du kannst im Kopf der while Schleife direkt die Variable füllen
 
K

kneitzel

Gast
Und was mir noch aufgefallen ist: Du übergibst der Funktion lesen element, aber Du nutzt element dann nur in der while schleife zum Einlesen der Zeile. Da musst Du doch nichts übergeben sondern kannst auf den Parameter verzichten und element wird zu einer lokalen Variable.
 

ZxSpectrum

Mitglied
Danke euch allen! Das hat mir weiter geholfen, jetzt funktioniert´s fast, wie ich es mir vorgestellt hätte.

Eine Frage habe ich an Euch noch.
Java:
public static void schreiben(){

        String zeilenumbruch = System.getProperty("line.separator");
        file = new File("Highscore.txt");
       
        try {

            if (file.exists()) file.delete();
           
            writer = new FileWriter(file, false);//Hängt ans Ende der Datei, wenn vorhanden       
           
            for (String counter: highscore) {
                writer.write(counter);
                writer.write(zeilenumbruch);
            }

            writer.flush();

            // Schliesst den Stream
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }//schreiben

Warum wird hier kein Zeilenumbruch in die Datei reingeschrieben und alle Werte werden in einer derselben Zeile ausgegeben? Hat jemand eine Idee?
 

X5-599

Top Contributor
Kann ich hier nicht nachvollziehen. Bei mir werden die Zeilenumbrüche geschrieben. Am Code kann es eigentlich nicht liegen.
- Sicher, dass dieser Code ausgeführt wird. Evtl gibt's ja noch eine andere Methode.
- Schaust du dir die richtige Highscore.txt an?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
P Beim sortieren nullpointerexception Allgemeine Java-Themen 12
S NullPointerException beim Laden von BMPs Allgemeine Java-Themen 3
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
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
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
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
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
A NullPointerException Allgemeine Java-Themen 15
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
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
V Button schließen - NullPointerException Allgemeine Java-Themen 6
V NullPointerException Allgemeine Java-Themen 12
Zrebna OutOfMemory-Error beim Build in der CI-Pipeline Allgemeine Java-Themen 5
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14

Ähnliche Java Themen


Oben