2016-04-15 8 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は、Ctrl-Zを使用してください。 – saka1029

答えて

1

documentation for Scanner.hasNextLine()より:

この方法の入力を待っている間にブロックすることができます。返されるのを待っている入力がない場合、それは座って来るより多くの入力を待つことを意味します

あなたScannerSystem.inからの入力を受け付けている場合、あなたは見つける必要がありますいつ入力を終了するかを決めるより良い方法です。たとえば、ユーザが"quit"と入力した場合、または空白行を入力した場合。

0

窓用のUNIXのため、この

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"); 
    } 
} 
関連する問題