Java Scanner hasNext()不返回false

时间:2013-04-06 04:33:42

标签: java java.util.scanner

我正在尝试从用户不断读取输入,直到用户输入quit。我只是输入'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;
        }
    }

1 个答案:

答案 0 :(得分:11)

如果您的Scanner被声明为System.in,则会询问System.in是否有下一个要接收的值。然后in类将等待用户输入内容,然后返回true。

为文件之类的内容保留hasNext(),其中输入大小是固定的。这样,当Scanner查询文件时,它有一个明确的hasNext()

相反,我建议将下一个值作为String抓取,然后检查它是否与整数格式匹配。如果是,则将其转换,否则,按照您的喜好处理它。

相关问题