关于java:无限循环上的扫描器类’hasNext()

Scanner class' hasNext() on infinite loop

我正在尝试编写使用Scanner类来获取用户输入的代码。 但hasNext(),hasNextInt()和hasNextLine()每次都会遇到无限循环。

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void getInput(ArrayList<Double> arr){

       Scanner input = new Scanner(System.in);
       String data ="";
       String init;
       while(input.hasNextLine()){
           init = input.nextLine();
           data += init;
       }
       .
       .
       .
   }


当且仅当源关闭时,在Scanner对象上调用hasNextLine()将返回false。 如果Scanner尝试从源读取字节或者到达流末尾(EOF)时发生IOException,则可以通过在InputStream上调用close()来执行此操作。 当到达末尾并接收此标记时,文件的InputStream将被关闭,而从System.in读取将阻塞,直到数据可用或抛出异常。

在Unix上,EOF标记通常由Ctrl-D提供,而在Windows上,它通常是Ctrl-Z。 如果您使用的是IDE,您可能会发现它们不同; 例如,我的Windows机器上的Intellij IDE使用Ctrl-D,Eclipse过去遇到了问题。