-2

该声明:

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

4 回答 4

3

数组是从 0 开始的,因此 3 元素数组包括 3 个元素,编号为012。对于具有n元素的数组,它们的编号0n-1。利用:

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

反而。

或者更好的是,不要硬编码:

for( int j = 0; j < a.length; j++ )
于 2013-09-15T21:12:23.380 回答
2

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

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

至:

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

数组索引是从 0 开始的。因此,大小数组的可访问索引n是 - 0, 1, 2, ..., (n - 1)。此外,您应该将条件基于数组长度,而不是对其进行硬编码:

for( int j = 0; j < a.length; j++ )
于 2013-09-15T21:12:15.327 回答
0

做的时候

new int[3] 

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

  1. 0
  2. 1
  3. 2
  4. 3

因此,当j == 3您请求编号为 4(也称为索引 3)的插槽时,程序将无法找到它,因为您只保留了 3 个,所以它会抛出一个ArrayIndexOutOfBoundsException!

于 2013-09-15T21:18:33.823 回答
0
int a[] = new int[ 3 ];

会有[3]吗?不,ArrayIndexOutOfBoundsException。

于 2013-09-15T21:14:00.897 回答