2016-04-15 15 views
1
public class EOF { 
    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     int i=1; 
     while(sc.hasNextLine()==true) 
     { 
      String str = sc.nextLine(); 
      System.out.println(i+" "+str); 
      i++; 
     } 
     System.out.println("completed"); 
    } 
} 

最後一行System.out.println("completed");未執行。該循環不會終止並持續運行。hasNext()函數在循環中沒有終止

+0

按Ctrl-d對於UNIX,按Ctrl-Z的窗口。 – saka1029

回答

1

documentation for Scanner.hasNextLine()

在等待輸入此方法可能阻塞。

這意味着,如果沒有輸入等待返回時,它會坐下來,等待更多的投入進去。

如果您Scanner是接受來自System.in輸入,你需要找到一個決定何時完成輸入的更好方式。例如,如果用戶鍵入"quit",或者如果他們輸入空白行。

0

請使用此

public class EOF { 
    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     int i=1; 
     while(sc.hasNextLine()==true) 
     { 
      String str = sc.nextLine(); 
      System.out.println(i+" "+str); 
      i++; 
      if(str.equals("stop")){ 
       break; 
      } 
     } 
     System.out.println("completed"); 
    } 
}