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

如何解决java.lang.ArrayIndexOutOfBoundsException异常?代码报错求助

Java数组索引越界异常分析与解决

报错原因

你遇到的java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0异常,本质是数组索引超出了数组的实际长度。

你的代码里,main方法的args参数是用来接收命令行启动参数的数组。当运行程序时没有传入任何参数,args就是一个长度为0的空数组,此时代码直接尝试访问args[0]和args[1],自然会触发索引越界异常。

除此之外,代码还存在两个潜在问题:

  • 如果传入的参数不是整数,会触发NumberFormatException
  • 如果第二个参数b为0,执行除法和取余操作时会触发ArithmeticException

解决方法

方法1:运行时传入合法参数

编译代码后,在命令行启动时传入两个整数参数,格式如下:

javac IntOps.java
java IntOps 12 4

这样args数组就会包含["12", "4"]两个元素,代码就能正常执行。

方法2:修改代码增加参数校验

为让程序更健壮,建议在代码中增加参数检查、异常捕获逻辑,处理各种非法输入场景:

public class IntOps {
    public static void main(String[] args) {
        // 检查参数数量
        if (args.length < 2) {
            System.out.println("请传入两个整数参数,格式:java IntOps 整数1 整数2");
            return;
        }

        int a, b;
        try {
            // 尝试将参数转为整数
            a = Integer.parseInt(args[0]);
            b = Integer.parseInt(args[1]);
        } catch (NumberFormatException e) {
            System.out.println("参数必须是整数,请重新输入");
            return;
        }

        // 检查除数是否为0
        if (b == 0) {
            System.out.println("第二个参数不能为0,除数不能为0");
            return;
        }

        int sum  = a + b;
        int prod = a * b;
        int quot = a / b;
        int rem  = a % b;

        System.out.println(a + " + " + b + " = " + sum);
        System.out.println(a + " * " + b + " = " + prod);
        System.out.println(a + " / " + b + " = " + quot);
        System.out.println(a + " % " + b + " = " + rem);
        System.out.println(a + " = " + quot + " * " + b + " + " + rem);
    }
}

修改后的代码会在参数不合法时给出明确提示,避免直接抛出异常,提升了程序的可用性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:55:15