在阅读了hasNextInt()API后,我仍然对此代码感到茫然。
Scanner input = new Scanner(System.in);
while (input.hasNextInt()) {
input.next();
}
为什么即使输入没有任何内容,循环也会启动。此外,hasNextInt()API提到
扫描仪不会超过任何输入。
这是什么意思?这与它有什么关系吗?
答案 0 :(得分:1)
如Scanner input = new Scanner(System.in);
不是阻塞调用,它只是创建一个带有STDIN作为输入的新扫描器。因此,执行继续循环。
来自https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#hasNext()
的API文档如果此扫描器的输入中有另一个标记,则返回true。在等待输入扫描时,此方法可能会阻塞。扫描仪不会超过任何输入。
扫描程序等待(此时input.hasNextInt()
实际上是一个阻止调用),供用户输入内容并按回车键。
然后在input.next();
它实际读取输入(消耗它)并提前读取位置