如果hasNextInt()什么都没有,则扫描器hasNextInt()返回true

时间:2016-06-25 04:09:24

标签: java java.util.scanner

在阅读了hasNextInt()API后,我仍然对此代码感到茫然。

Scanner input = new Scanner(System.in);
while (input.hasNextInt()) {
    input.next();
}

为什么即使输入没有任何内容,循环也会启动。此外,hasNextInt()API提到

  

扫描仪不会超过任何输入。

这是什么意思?这与它有什么关系吗?

1 个答案:

答案 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();它实际读取输入(消耗它)并提前读取位置