我一直在使用 java 的 Scanner 类时遇到问题。我可以让它很好地读取我的输入,但问题是当我想要输出一些东西时。给定多行输入,我想在完全读取所有输入后只打印一行。这是我用来读取输入的代码:
public static void main(String[] args){
Scanner scanner = new Scanner(System.in); //scanner reads block of input
while(scanner.hasNextLine()){
//body of loop goes here
String s = scanner.nextLine();
Scanner ls = new Scanner(s); //scanner to parse a line of input
while(ls.hasNext()){
//body of nested loop goes here
ls.next();
}
}
System.out.println("Fin");
}
即使已读取所有输入行,程序也不会到达 System.out.println 消息。 (请注意,该消息不能发送到其他任何地方,否则它会在循环运行时输出多次)。我该如何解决?任何帮助将不胜感激。
最佳答案
正如我在您使用的外部 while 循环中看到的那样
scanner.hasNextLine();
方法。如果必须等待输入,此方法将被阻止。你还有
Scanner scanner = new Scanner(System.in);
声明。所以 system.in 将一直等待输入,因此 hasNextLine() 方法必须等待输入。 这就是控件卡在循环中无法继续进行的原因。
要修复它,您可以先将输入存储在一个字符串变量中,然后在其上调用扫描器构造函数。
关于Java Scanner 不会 "finish"读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9816965/