【问题标题】:Java Scanner hasNext() doesn't return falseJava Scanner hasNext() 不返回 false
【发布时间】:2026-02-08 19:55:01
【问题描述】:

我正在尝试连续读取用户的输入,直到用户键入退出。我只是通过输入'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;
        }
    }

【问题讨论】:

    标签: java java.util.scanner


    【解决方案1】:

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

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

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

    【讨论】:

      最近更新 更多