空扫行后Java Scanner停止读取[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了空扫行后Java Scanner停止读取[关闭]相关的知识,希望对你有一定的参考价值。
我正在寻找这个话题,我发现了这个Java stop reading after empty line
我有一个关于下一个代码的问题,该代码是在我之前引用的另一个StackOverflow页面中编写的:
while (!sc.nextLine().equals("")){
text[i] = sc.nextLine();
i++;
}
我使用类似的测试它,这是代码:
List<String> list = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
while(!scanner.nextLine().equals(""))
{
list.add(scanner.nextLine());
}
list.forEach(s -> System.out.println(s));
所以想法是,读取一些输入(字符串)将它们存储到列表中,当行为空时停止循环。
但是这个输入的结果:
1 2 3 4
是这个输出:
2 4
当然,我期待的是,因为当你在while句子中进行比较时,你会调用nextLine方法。所以下次你打电话的时候,你会打电话给第二个,所以下一行。
我在寻找是否有人知道解决这个问题的好方法?所以你正在读取输入,存储它们,如果线是空的,则停止循环。
谢谢你。
答案
每次调用nextLine() - 方法时扫描器都会有效地从输入中读取一行!这意味着你编程跳过每一行!
为避免这种情况,请将行读取分配给变量,然后将此变量的内容添加到列表中。例如这样:
List<String> list = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
String line;
while (!(line = scanner.nextLine()).equals("")) {
list.add(line);
}
list.forEach(s -> System.out.println(s));
以上是关于空扫行后Java Scanner停止读取[关闭]的主要内容,如果未能解决你的问题,请参考以下文章