2016-04-10 1 views
-2

Je suis nouveau à Java. J'essaie de parcourir un fichier et d'écrire chaque chaîne dans une ArrayList. Pour ce faire, j'ai un code qui ressemble à ceci:Pourquoi est-ce que j'obtiens une boucle infinie quand j'utilise Scanner.hasNext() dans une boucle while?

public static void main(String[]args)throws IOException 
{ 
    File customerData = new File("accountData.txt"); 
    Scanner fileReader = new Scanner(customerData); 
    ArrayList<String> stringArrList = new ArrayList<String>(); 

    String currentWord = ""; 
    System.out.println("About to enter while loop");  

    while(fileReader.hasNext()); 
    { 
     currentWord = fileReader.next(); 
     stringArrList.add(currentWord); 
    } 
    System.out.println("We have exited the while loop"); 
} 

Cependant, ce code reste coincé dans une boucle infinie pour une raison quelconque. Même si je place une instruction d'impression comme première ligne dans le bloc while, elle ne s'exécute pas.

Le fichier accountData.txt est disposé comme ceci:

String String String String String 
String String String String String 
... 

J'ai lu partout et lu que souvent ce problème est parce que les gens n'utilisent pas Scanner.next() pour déplacer le pointeur mais je crois que je le fais. Je n'ai aucune idée de ce qui ne va pas.

Merci pour l'aide!

Répondre

3

ce problème est parce que les gens n'utilisent pas Scanner.next() pour déplacer le pointeur, mais je crois que je fais que

Vous serait utilise Scanner.next(), à l'exception de la ; termine la boucle corps. Retirez-le. Changer

while(fileReader.hasNext()); 
{ 
    currentWord = fileReader.next(); 
    stringArrList.add(currentWord); 
} 

à

while(fileReader.hasNext()) // <-- no semicolon 
{ 
    currentWord = fileReader.next(); 
    stringArrList.add(currentWord); 
} 
+0

S'il vous plaît voter juste pour fermer comme faute de frappe ou sélectionnez l'une des centaines de doublons. – Savior