Java控制台中的多行读取不会退出

时间:2018-04-16 16:21:20

标签: java console

我使用以下代码在Java中进行多行读取。问题是,由于控制台正在运行,它永远不会退出while循环。我该怎么做呢?

由于

Scanner scanner = new Scanner(System.in);
    while (scanner.hasNextLine()) {
        String temp = scanner.nextLine();
        data.add(temp);
        log.info(data.toString());
    }
    scanner.close();

3 个答案:

答案 0 :(得分:1)

System.in从扫描仪的角度来看总是有下一行,因为它始终在等待新的输入。如果您的输入中没有空白行,您可以在结尾处向输入添加一个空行,然后在循环结束时添加此行:

if(temp.isEmpty()){
   break;
}

答案 1 :(得分:0)

linux shell: CTRL - D (文件结尾)

windoze:获取linux(或gitbash)

答案 2 :(得分:0)

您没有使用扫描程序类从文件中读取数据,而是从默认输入流中读取,该输入流没有EOF(文件结束) )性格。这个问题: hasNextLine()方法没有识别出没有更多的输入!尝试这样的东西从命令行读取:

String temp;
Scanner scanner = new Scanner(System.in);

while((temp = scanner.nextLine()) != null)
{
  data.add(temp);
  log.info(data.toString());
  ...
}

scanner.close();

要手动退出循环,请使用user2023577 ...

选项