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

  • Post category:Java

Java中的ArrayIndexOutOfBoundsException异常表示你试图索引数组的位置超出了数组范围,即数组下标值越界。

造成ArrayIndexOutOfBoundsException异常的原因通常有两种情况:

1.访问数组时下标超出了数组的范围

举例来说,数组的长度为N,则数组的下标只能在0到N-1之间,如果你试图使用一个超过这个范围的下标去访问数组中的元素,就会抛出ArrayIndexOutOfBoundsException异常。

int[] num = {1, 2, 3, 4, 5};
System.out.println(num[5]); // 这里会抛出ArrayIndexOutOfBoundsException异常,因为下标范围应该是0-4,下标5超出了数组范围

2.数组访问中使用了负数下标

Java数组的下标必须是非负整数,如果你使用负数下标去访问数组中的元素,也会抛出ArrayIndexOutOfBoundsException异常。

int[] num = {1, 2, 3, 4, 5};
System.out.println(num[-1]); // 这里也会抛出ArrayIndexOutOfBoundsException异常,因为下标应该是非负整数

解决ArrayIndexOutOfBoundsException异常的办法一般有以下两种:

1.检查数组的长度和下标的范围

当使用数组下标时要确保它在合法的范围之内,即不超出数组的长度范围,也不是负数。这一般可以通过if判断加以解决。

int[] num = {1, 2, 3, 4, 5};
if (index >= 0 && index < num.length) {
    System.out.println(num[index]);
} else {
    System.out.println("数组下标越界");
}

2.使用异常处理机制

当然,如果你不确定数组下标是否越界,也可以使用异常处理机制来处理这个问题。在访问数组元素的时候,使用try-catch语句块来捕获ArrayIndexOutOfBoundsException异常。

int[] num = {1, 2, 3, 4, 5};
try {
    System.out.println(num[5]);
} catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("数组下标越界");
}

以上就是解释了ArrayIndexOutOfBoundsException异常的原因,并给出了两个示例说明及对应的解决方法。