.hasNext()无法正常工作

时间:2015-03-24 08:21:25

标签: java

    Scanner scanner = new Scanner(System.in);
    // check if the scanner has a token
    System.out.println(scanner.hasNext());

    // print the rest of the string
    System.out.println(scanner.nextLine());

    // check if the scanner has a token after printing the line
    System.out.println(scanner.hasNext());

当我运行此代码并输入:

  

您好

在控制台中打印这些:

true
Hi

但从未编程或打印false。问题是什么?

2 个答案:

答案 0 :(得分:5)

/**
 * 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.
 *
 * @return true if and only if this scanner has another token
 * @throws IllegalStateException if this scanner is closed
 * @see java.util.Iterator
 */
public boolean hasNext()
等待输入时

hasNext()阻塞。这就是为什么对System.out.println(scanner.hasNext());的第二次调用没有打印任何内容,程序也没有结束。

如果您的扫描程序正在从文件而不是标准输入中读取数据,则hasNext()在到达文件末尾时将返回false。

答案 1 :(得分:1)

您正在从控制台读取数据,这就是为什么它不会返回错误值。而不是尝试从文件中读取数据它确实有效,因为当文件读取到达文件末尾然后它将返回false,因为如果没有值。