You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java循环结束后Scanner的nextLine()无法读取输入是什么原因?

问题根因

Scanner类的nextInt()方法仅读取输入流中的整数数值,不会处理用户输入完成后按下回车键产生的换行符\n,该换行符会残留在输入缓冲区中。后续你调用nextLine()时,方法会直接读取到这个残留的换行符,返回空字符串,所以看起来程序没有等待你的输入就直接向下执行了。
你之前在输入非整数的异常分支里加的scan.nextLine()是正确的,作用就是清空非法输入的整行内容避免死循环,唯独缺了合法输入整数后清空残留换行符的逻辑。

修复方案

在你确认读取到合法整数的分支中,增加一行scan.nextLine()吃掉残留的换行符即可,修改后的do-while代码块如下:

do {
    System.out.println("Enter an integer: ");
    if (scan.hasNextInt()) {
        index = scan.nextInt();
        bool = true;
        // 新增这行,清除nextInt()留下的换行符
        scan.nextLine();
    } else {
        bool = false;
        System.out.println("Error: Index is not Integer.");
        scan.nextLine();
    }
} while (!bool);

内容的提问来源于stack exchange,提问作者L. Jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:45:05