Java的扫描仪hasNext()不返回false(Java Scanner hasNext() d

2019-08-19 23:58发布

我试图从用户连续读取输入直至用户输入quit。 我通过只输入测试它“退出”,但console.hasNext()似乎并没有被返回false。 实际上似乎程序被阻止在第7行(hasNext()线)。 有任何想法吗?

    boolean bool = true;
    while (bool) {
        System.out.println("Type 'quit':");
        Scanner console = new Scanner(System.in);
        if (console.next().equals("quit")) {
            System.out.println("You typed quit");
            System.out.println("check: " + console.hasNext()); // This line doesnt print
            bool = false;
        }
    }

Answer 1:

如果您的Scanner被声明为System.in ,它会询问System.in如果要接收的下一个值。 将in随后类会等待用户输入一些东西,然后返回true。

储备hasNext()的东西像文件,其中输入的大小是固定的。 这样,当Scanner查询文件,它有一个明确的hasNext()

相反,我建议抓住下一个值的字符串,然后检查是否整数格式相匹配。 如果是这样,然后将其转换,否则,处理它,但是你会喜欢。



文章来源: Java Scanner hasNext() doesn't return false