Java报错”ArrayIndexOutOfBoundsException”的原因以及解决办法

  • Post category:Java

Java 报 “ArrayIndexOutOfBoundsException” 是指访问了数组的无效索引,即索引在数组范围之外。通常是由于索引的计算错误或数组的定义有误导致。解决这个问题的方法是在访问数组元素之前,先确保索引在合法范围内。可以通过检查索引值是否小于零或大于等于数组长度来避免抛出此异常。

以下是两个示例:

示例1

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = new int[2];
        System.out.println(arr[3]);
    }
}

运行此程序会抛出 “ArrayIndexOutOfBoundsException” 异常,因为访问了数组的无效索引。”arr” 数组的长度是 2,而试图访问索引为 3 的元素,超出了数组的范围。

要解决这个问题,可以在访问数组元素之前,先检查索引是否大于等于 0 且小于数组长度:

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = new int[2];
        int index = 3;
        if (index >= 0 && index < arr.length) {
            System.out.println(arr[index]);
        } else {
            System.out.println("索引无效!");
        }
    }
}

示例2

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3};
        for (int i = 0; i <= arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

运行此程序会抛出 “ArrayIndexOutOfBoundsException” 异常,因为循环内的 i 可以取到数组的长度,访问了超出数组范围的索引。

要解决这个问题,可以将循环条件中的小于等于修改为小于:

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3};
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

以上两个示例演示了如何避免访问无效索引的方法。在编写代码时,请切记检查索引是否在数组的范围内。