我使用以下代码在Java中进行多行读取。问题是,由于控制台正在运行,它永远不会退出while循环。我该怎么做呢?
由于
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
String temp = scanner.nextLine();
data.add(temp);
log.info(data.toString());
}
scanner.close();
答案 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 ...
选项