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

Java使用Scanner输入学号时空值退出逻辑不生效如何解决

Java Scanner读取学号空输入终止问题修复

问题根因

  • 原代码调用Scanner.nextInt()时,若用户输入空值,该方法会直接抛出InputMismatchException,根本不会执行后续的判空逻辑
  • 基本数据类型int不存在null值,将int转换为Integer后也不可能为null,因此i.equals(null)判断永远为假,对应代码块不会触发
  • 无需每次输入都新建Scanner实例,全局复用同一个即可,重复创建会造成资源浪费,还可能引发输入流异常

修复后代码

public static void inserimento() {
    Studente s = null;
    // 全局复用一个Scanner对象
    Scanner scanner = new Scanner(System.in);
    do {
        System.out.println("\nmatricola:");
        // 先读取整行字符串,方便判断空输入
        String matInput = scanner.nextLine().trim();
        // 空输入直接终止程序
        if (matInput.isEmpty()) {
            break;
        }
        // 非空输入转换为int类型学号
        int matricola = Integer.parseInt(matInput);
      
        System.out.println("\ncognome:");
        String cognome = scanner.nextLine().trim();
      
        System.out.println("\nnome:");
        String nome = scanner.nextLine().trim();
      
        s = new Studente(matricola, cognome, nome);
    } while (true);
  
    scanner.close();
    System.out.println("fine inserimento");
}

可选优化

如果需要处理用户输入非数字的异常场景,可以在Integer.parseInt外层添加try-catch捕获NumberFormatException,抛出输入格式错误提示后重新触发学号输入逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:45:10