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

如何使InputMismatchException适配Integer.parseInt(args[0])并实现命令行年龄异常处理?

我来帮你解决这个问题,咱们一步步理清楚:

首先得明确一个核心点:Integer.parseInt() 本身不会抛出 InputMismatchException——这个异常是Scanner类专属的,用来处理输入流中的类型不匹配。parseInt遇到非整数输入时,抛出的是NumberFormatException。所以要让InputMismatchException生效,我们需要捕获parseInt抛出的NumberFormatException,再手动抛出InputMismatchException。

同时,针对命令行无输入的场景,我们可以先检查args数组的长度,为空时直接抛出ArrayIndexOutOfBoundsException并输出指定提示。

完整代码实现

import java.util.InputMismatchException;

public class AgeInputProcessor {
    public static void main(String[] args) {
        int age;

        // 处理命令行无输入的情况
        if (args.length == 0) {
            System.err.println("Not enough arguments on the command line");
            throw new ArrayIndexOutOfBoundsException("No command line arguments provided");
        }

        try {
            // 严格按照要求使用Integer.parseInt完成类型转换
            age = Integer.parseInt(args[0]);
            // 转换成功后的逻辑(可选)
            System.out.println("Successfully parsed age: " + age);
        } catch (NumberFormatException e) {
            // 将parseInt的异常转换为题目要求的InputMismatchException
            System.err.println("Error in the input enter a number");
            throw new InputMismatchException("Input '" + args[0] + "' is not a valid integer");
        }
    }
}

代码关键逻辑说明

  • 无参数处理:先判断args.length是否为0,直接打印错误提示并抛出ArrayIndexOutOfBoundsException,完全符合题目要求。
  • 类型转换与异常转换:用try-catch包裹Integer.parseInt(args[0]),当输入非整数值(比如fishs)时,parseInt会抛出NumberFormatException,我们在catch块里打印指定错误信息,再手动抛出InputMismatchException,满足题目对异常类型的要求。
  • 约束合规:全程未使用Scanner,严格通过Integer.parseInt(args[0])完成类型转换。

测试场景验证

  1. 无参数运行:java AgeInputProcessor → 打印Not enough arguments on the command line并抛出ArrayIndexOutOfBoundsException
  2. 非整数参数运行:java AgeInputProcessor fishs → 打印Error in the input enter a number并抛出InputMismatchException
  3. 整数参数运行:java AgeInputProcessor 30 → 输出Successfully parsed age: 30,正常执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:18:57