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

Java中使用args参数获取输入触发数组越界异常的问题求助

ArrayIndexOutOfBoundsException 问题根源与解决方案(命令行参数方式)

问题根源

  • 当你通过java YourClassName直接运行程序时,args数组的长度为0——因为你没有在命令行传入任何参数。此时访问args[0]或args[1],必然触发数组索引越界异常,数组里根本不存在对应位置的元素。
  • 只有在运行时明确传入参数(比如java YourClassName 10 20),args数组才会被填充为["10", "20"],此时args[0]和args[1]才有合法的取值。

解决方案

1. 运行时传入命令行参数

在终端执行程序时,直接跟上所需的两个整数参数:

java YourClassName 15 30

此时args数组会被正确初始化,Integer.parseInt(args[0])和Integer.parseInt(args[1])可以正常解析数值。

2. 代码内增加参数合法性检查

在解析参数前先判断args数组长度,不满足要求时给出提示并终止程序,避免异常触发:

public class YourClass {
    static class NegativeOutputException extends Exception {
        public NegativeOutputException(String message) {
            super(message);
        }
    }

    public static void main(String[] args) {
        // 先校验参数数量
        if (args.length < 2) {
            System.out.println("错误:请传入两个整数参数!");
            System.exit(1); // 退出程序,阻止后续错误逻辑执行
        }

        try {
            int num1 = Integer.parseInt(args[0]);
            int num2 = Integer.parseInt(args[1]);
            
            // 业务逻辑示例:计算后判断是否抛出自定义异常
            int result = num1 - num2;
            if (result < 0) {
                throw new NegativeOutputException("计算结果为负数");
            }
            System.out.println("计算结果:" + result);
        } catch (NumberFormatException e) {
            System.out.println("错误:传入的参数不是有效的整数!");
        } catch (NegativeOutputException e) {
            System.out.println(e.getMessage());
        }
    }
}

3. 兼容无参数场景(可选)

如果希望程序在未传入参数时也能正常运行,可以设置默认值或引导用户补充输入:

public static void main(String[] args) {
    int num1, num2;
    
    if (args.length >= 2) {
        num1 = Integer.parseInt(args[0]);
        num2 = Integer.parseInt(args[1]);
    } else {
        // 无参数时使用默认值
        num1 = 10;
        num2 = 5;
        System.out.println("未传入参数,使用默认值:num1=10,num2=5");
    }

    // 后续业务逻辑...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:03:34