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

Java中如何通过单个空行输入终止使用Scanner的while循环

问题根源

你的代码需要两次空行才能退出的核心原因是逻辑结构存在两处缺陷:

  • 循环内读取到空行后将line赋值为null,后续while判断调用line.equals("")会触发空指针异常,退出逻辑执行异常
  • 行读取逻辑拆分不合理:初始单独读取第一行,循环内部又单独读取下一行,空行判定和循环退出的时机错位,导致单次空行无法触发终止逻辑

修复方案

将行读取和空行校验统一合并到循环条件中,匹配到单空行直接终止循环:

Scanner tgb = new Scanner(System.in);
String line;
// 若需要严格匹配完全无空格的空行,可删除trim()
while ((line = tgb.nextLine()) != null && !line.trim().isEmpty()) {
    String[] splitString = line.split(" ");
    String command = splitString[0];

    switch (command) {
        case "def":
            definition(splitString);
            break;
        case "calc":
            calculation(splitString);
            break;
        case "clear":
            clear();
            break;
    }
}
tgb.close();

逻辑说明

修复后的代码每次读取一行内容后优先做非空校验,只要输入为空行就会直接跳出循环,没有额外的中间分支逻辑,既避免了空指针异常,也完全满足单空行退出的需求。


内容的提问来源于stack exchange,提问作者Isak Holmström

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:06:03