数组的ArrayIndexOutOfBoundsException

时间:2013-09-15 21:11:24

标签: java arrays

声明:

public static void main(String[] args) {
    int a[] = new int[ 3 ];
    for( int j = 0; j <= 3; j++ )
        System.out.println( a[j] );
}

给了我这个:

0 0 0 线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:3     在Untitled.main(Untitled.java:7)

为什么会这样?

4 个答案:

答案 0 :(得分:3)

数组是基于0的,因此3元素数组包含3个元素,编号为012。对于包含n元素的数组,它们的编号为0n-1。使用:

 for( int j = 0; j < 3; j++ )

代替。

或者更好,不要硬编码:

for( int j = 0; j < a.length; j++ )

答案 1 :(得分:2)

您访问的数组索引太多了。改变你的循环:

for( int j = 0; j <= 3; j++ )

为:

for( int j = 0; j < 3; j++ )

数组索引从0开始。因此,大小为n的数组的可访问索引为 - 012,...,(n - 1)。此外,您应该根据数组长度来确定条件,而不是对其进行硬编码:

for( int j = 0; j < a.length; j++ )

答案 2 :(得分:0)

int a[] = new int[ 3 ];

会有[3]吗?不,ArrayIndexOutOfBoundsException。

答案 3 :(得分:0)

做的时候

new int[3] 

您只分配/请求3个内存'插槽',但范围[0,3]有四个数字

  1. 0
  2. 1
  3. 2
  4. 3
  5. 所以当你j == 3请求插槽号为4(又名索引3)时,程序将无法找到它,因为你只保留了3,所以它会抛出一个ArrayIndexOutOfBoundsException!< / p>