2016-12-28 9 views
1

я должен читать из консоли этого вида ввода:Inifite петля с java.util.Scanner в Затмении

word1 
word2 

word3 
word4 

Я пробовал:

public static void lectSC(Scanner sc, String l, boolean next) { 
     l=sc.nextLine();  //keep the first line 
     while(!l.isEmpty()){ //if it is not empty go! until the white line 
      checkDicc(l);//check if is the word that I am looking for 
      l=sc.nextLine(); //get the next word 
     } 
     l=sc.nextLine(); //take the nextLine which has a word3 
     while(!l.isEmpty()){ 
      parejas.add(l); 
      next=sc.hasNext(); //HERE IT IS THE INFINITY LOOP 
      if(next){ //I try with this next know which is the value of hasNext(), but I never arrive here when it is the last line. 
       l=sc.nextLine(); 
      }else{ 
       l=""; //It is how it should exit 
      } 
     } 
     System.out.println("OUT"); 
    } 

Я должен сказать, что когда я нажмите с моей клавиатуры Ctrl-Z, программа продолжит работу, но она не может работать так.

СПАСИБО !!

ответ

0

Метод hasNext() становится заблокирован для ввода

, при чтении из консоли программа ожидает, что поток, и он будет ждать дальнейшего ввода.

Ниже официальный документ Java для метода, он упоминает, что блокирует природу, но не много подробностей об этом: - http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#hasNext()