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

Java程序运行意外提前终止 无法接收用户输入问题求助

错误根因

你编写的代码中没有调用Scanner的输入读取方法,直接将Scanner对象本身与字符串"hi"做等值判断,该判断永远返回false,程序不会等待用户输入就会执行完所有逻辑直接终止。

可正常运行的修复代码
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        System.out.println("Hey!");
        Scanner sc = new Scanner(System.in);
        // 读取用户输入的一行内容再做等值判断
        String input = sc.nextLine();
        if ("hi".equals(input)) {
            System.out.println("What's up?");
        }
        sc.close();
    }
}
代码优化方案
  • 替换通配符导入为指定类导入:将import java.util.*;改为import java.util.Scanner;,减少编译时的类检索开销,代码可读性也更强
  • 使用try-with-resources语法自动释放资源:无需手动调用close()方法,避免忘记关闭资源导致的流泄漏,优化后代码如下:
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        System.out.println("Hey!");
        try (Scanner sc = new Scanner(System.in)) {
            if ("hi".equals(sc.nextLine())) {
                System.out.println("What's up?");
            }
        }
    }
}
  • 常量前置调用equals方法:如上代码所示将"hi"放在equals前侧,可避免用户输入为null时抛出空指针异常
  • 当前逻辑属于极简交互场景,没有可进一步压榨性能的空间,上述优化已经是当前场景下的最优实现。

内容的提问来源于stack exchange,提问作者SamiOsman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 01:36:07