Verwenden von BufferedReader.readLine () in einer while-Schleife ordnungsgemäß

Ich habe also ein Problem beim Einlesen einer Textdatei in mein Programm. Hier ist der Code:

     try{
        InputStream fis=new FileInputStream(targetsFile);
        BufferedReader br=new BufferedReader(new InputStreamReader(fis));

        //while(br.readLine()!=null){
        for(int i=0;i<100;i++){
            String[] words=br.readLine().split(" ");
            int targetX=Integer.parseInt(words[0]);
            int targetY=Integer.parseInt(words[1]);
            int targetW=Integer.parseInt(words[2]);
            int targetH=Integer.parseInt(words[3]);
            int targetHits=Integer.parseInt(words[4]);
            Target a=new Target(targetX, targetY, targetW, targetH, targetHits);
            targets.add(a);
        }
        br.close();
    }
    catch(Exception e){
        System.err.println("Error: Target File Cannot Be Read");
    }

Die Datei, aus der ich lese, besteht aus 100 Argumenten. Wenn ich eine for-Schleife benutze, funktioniert das perfekt. Wenn ich die while-Anweisung verwende (die Anweisung, die über der for-Schleife auskommentiert ist), stoppt sie bei 50. Es besteht die Möglichkeit, dass ein Benutzer das Programm mit einer Datei ausführen kann, die eine beliebige Anzahl von Zeilen enthält. nicht funktionieren.

Warum macht die Leitungwhile(br.readLine()!=null) halt bei 50? Ich habe die Textdatei überprüft und es gibt nichts, was sie aufhängen könnte.

Ich bekomme keine Fehler vom Try-Catch, wenn ich die while-Schleife verwende, so dass ich ratlos bin. Hat jemand irgendwelche Ideen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage