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

Java控制台中的多行读取未退出,java,console,Java,Console,我使用以下代码在Java中执行多行读取。问题是,由于控制台正在运行,它永远不会退出while循环。我怎样才能做到这一点 谢谢 Scanner scanner = new Scanner(System.in); while (scanner.hasNextLine()) { String temp = scanner.nextLine(); data.add(temp); log.info(data.toString()); }

我使用以下代码在Java中执行多行读取。问题是,由于控制台正在运行,它永远不会退出while循环。我怎样才能做到这一点

谢谢

Scanner scanner = new Scanner(System.in);
    while (scanner.hasNextLine()) {
        String temp = scanner.nextLine();
        data.add(temp);
        log.info(data.toString());
    }
    scanner.close();
linux shell:CTRL-D(文件结尾)


windoze:获取linux(或gitbash)

系统。在
中,从扫描仪的角度来看,将始终有下一行,因为它总是在等待新的输入。如果您的输入中没有空行,您可以在输入的末尾添加一个空行,然后在循环的末尾添加:

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

您不使用Scanner类读取文件,而是从默认输入流读取,该流没有EOF(文件结束)字符。问题在于:hasNextLine()方法无法识别没有更多输入!尝试以下方法从命令行读取:

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

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

scanner.close();
要手动退出循环,请使用以下选项