gpt4 book ai didi

java - 如果 hasNextInt() 没有任何内容,则扫描器 hasNextInt() 返回 true

转载 作者:行者123 更新时间:2023-11-30 07:18:17 27 4
gpt4 key购买 nike

读完 hasNextInt() API 后,我仍然对这段代码感到困惑。

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

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

The scanner does not advance past any input.

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

最佳答案

Scanner input = new Scanner(System.in) 不是阻塞调用,它只是创建一个以 STDIN 作为输入的新 Scanner。因此执行继续到 while 循环。

来自 API 文档 Oracle - Scanner (Java Platform SE 7)

Returns true if this scanner has another token in its input. This method may block while waiting for input to scan. The scanner does not advance past any input.

扫描器等待(此时的input.hasNextInt()实际上是一个阻塞调用)用户输入内容并按Enter

然后在 input.next() 调用中,它实际上读取输入(使用它)并前进读取位置。

但是,如果您在终端或控制台中输入类似 12 hello 的内容,这将导致 while 循环循环一次,然后退出。原因是 hasNextInt() 读取直到第一个空格,并检查直到空格的字符是否是有效的 int。在本例中,它们是,并且 hasNextInt() 返回 true。然后,在循环的第二次迭代中,它遇到 String,因此 hasNextInt() 返回 false,这导致循环结束。

关于java - 如果 hasNextInt() 没有任何内容,则扫描器 hasNextInt() 返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38024861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com