2016-11-14 3 views
-2

Ich arbeite gerade an einem Projekt für meine Klasse, in dem ich ein Array, das Zahlen in einer Textdatei ist, sortieren muss. Ich habe einen Leser erstellt, um zu sehen, wie viele Werte ich in der TXT-Datei habe, so dass ich meine Array-Größe definieren kann, aber meine while() -Anweisung scheint gebrochen zu sein und geht in eine endlose Schleife, wenn .hasNextLine. Hier ist mein Code:Richtige Verwendung von Scanner.hasNextLine in Java?

File unsorted = new File("unsorted.txt"); 

    int j = 0;//Counter for the amount of slots in the array 

    System.out.println("Executing file reading..."); 

    try 
    { 

     Scanner input = new Scanner(unsorted); 

     while(input.hasNextLine()){ 

      j++;//Scanner to count the length of the array 

      System.out.println(j); 

     } 

     input.close(); 

     System.out.println("The file has " + j + " lines."); 

    } 
    catch (IOException ex){ 

     System.out.printf("ERROR: Could not read file 'unsorted.txt'", ex); 

    } 

    System.out.println("File read."); 

Meine Druckzeile nach dem try {} nicht immer drucken, statt, wenn ich den J Druck innerhalb der while() Schleife, geht es auf ewig. Die Datei hat vorerst 7 Werte, alle Zahlen.

+7

Sie lesen nie die Zeile. Überprüfen Sie, ob es mehr Zeilen hat. Also sagt es immer "Ja", weil es immer noch in der ersten Zeile ist. – RealSkeptic

+0

Danke ... Ich fühle mich jetzt ziemlich dumm ... – bordia

+1

Mögliches Duplikat von http://StackOverflow.com/Questions/8352040/scanner-on-text-file-Hasnext-is-infinite –

Antwort

1

Der Wert der hasNextLine() Methode ändert sich nur - hat nur die Chance zu ändern - wenn Sie nextLine() aufrufen. Die Methode nextLine() gibt Ihnen den Inhalt der Zeile und den Scanner um eine Zeile weiter.