BufferedReader.readLine().length() wirft NullPointer

Dimax

Top Contributor
Guten Tag ,
Ich habe eine Frage :wann kann BufferedReader.readLine() !=null sein, aber
BufferedReader.readLine().length() NullPointer werfen?
Java:
int AnzahlZeilen = Analyse.AnzahlZeilen(textfile);
        String[][] Werte=new String[AnzahlZeilen+1][4];
        BufferedReader bufReader = new BufferedReader(new StringReader(textfile));
       
try{
            while( bufReader.readLine() != null )
            {
                ++ZeilenNr;
                Zeile = bufReader.readLine();
          
                //System.out.println(Zeile.length()+"hhhhhhhh"+ZeilenNr+"fffffff"+AnzahlZeilen+"dddddd"+Zeile);
         
         
                Position2=Position2+Zeile.length();/*******************************Hier passiert das*************************/
           
                Werte[ZeilenNr - 1][0] = Integer.toString(ZeilenNr);
             
                Werte[ZeilenNr - 1][1] =Zeile;
           
                Werte[ZeilenNr - 1][2] =Integer.toString(Position1);
          
                Werte[ZeilenNr - 1][3]=Integer.toString(Position2);
           
                Position1=Position1+Position2;
          
                }
            }catch(NullPointerException ex){
              
                System.out.println("haramba");
            }catch(Exception ex) {
                ex.printStackTrace();
            }
java.lang.NullPointerException
at methoden.Analyse.ZeilenBestimmen(Analyse.java:203)
at Spring.controllers.MainController.addProgToDb(MainController.java:148)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)......usw
 
Zuletzt bearbeitet:
readLine liefert null, wenn die Datei zu Ende ist.

Du musst das Ergebnis von readLine erst einer Variablen zuweisen und dann diese auf null prüfen.

Erst dann kannst Du den String verwenden.

Beispielcode findet Deine Suchmaschine sicher in Mengen.
 
"readLine" liest die Zeile *und setzt den Zeiger auf die naechste oder auf das Ende der Datei*. Also jeder Aufruf von "readLine" liefert die naechste Zeile, du musst dies also entsprechend irgendwo zuweisen. Der Code dafuer sieht meist so aus:

Java:
String line = null;

while ((line = reader.readLine()) != null) {
    // line is guaranteed to be not null here.
}

Oder in aufgeloester Variante:

Java:
String line = reader.readLine();

while (line != null) {
    // line is guaranteed to be not null here.

    line = reader.readLine();
}
 

Neue Themen


Zurück
Oben