3

我试图从用户那里连续读取输入,直到用户键入退出。我只是通过输入'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;
        }
    }
4

1 回答 1

13

如果你Scanner被声明为System.in,它将询问System.in是否有下一个值被接收。然后in该类将等待用户输入某些内容,然后返回 true。

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

相反,我建议将下一个值作为字符串获取,然后检查它是否与整数格式匹配。如果是,则转换它,否则,随心所欲地处理它。

于 2013-04-06T04:35:24.003 回答