在Java中“ hasNext()”的使用[关闭]

问题描述 投票:0回答:4
Scanner input = new Scanner(System.in);
while(input.hasNext())
{ 
    System.out.println(input.nextInt());
    System.out.println("To go on,Enter any number");    
}

hasNext()语句在这里如何运行?谁能详细解释一下?

java java.util.scanner
4个回答
3
投票

hasNext()告诉您是否要从流中读取更多元素。在这种情况下,呼叫将被阻塞,直到有用户输入为止。

有三种情况:

  1. 用户完全不提供任何输入。通话将无限期阻止。

  2. 用户提供的输入不是EOF。返回值将是正确。

  3. 用户输入EOF。返回值将为false。

在程序的上下文中,这意味着将执行while循环,直到用户提供EOF(Ctrl + D或Ctrl + Z)为止。如果用户意识到这一点,我想会没事的。

但是绝对可以使该行为对用户更友好:例如,当前它要求用户输入数字。但是hasNext()不在乎输入是否为数字,只要输入不是EOF,循环将永远继续。]

如果用户尝试通过命令行提供一些预定义的输入,如果输入未使用EOF专门终止,则程序将永远阻塞,这将引起另一个问题。该语句确实not

表示没有更多输入要读取时,程序将退出(当然,除非EOF指定)。

1
投票

基于JavaDochasNext()


1
投票

根据文档的[Scanner类实现一个Iterator<String>]类>

请参见here


0
投票

扫描仪将扫描您收到的整个用户输入。因此,基本上正确的编码标准着重于如何处理意外情况。因此hasNext()方法基本上检查当前位置之后的空格或换行,并检查此位置之后的二进制值。如果存在,则返回true,否则返回false。

© www.soinside.com 2019 - 2024. All rights reserved.