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)
为什么会这样?
答案 0 :(得分:3)
数组是基于0的,因此3元素数组包含3个元素,编号为0
,1
和2
。对于包含n
元素的数组,它们的编号为0
到n-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
的数组的可访问索引为 - 0
,1
,2
,...,(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]有四个数字
所以当你j == 3
请求插槽号为4(又名索引3)时,程序将无法找到它,因为你只保留了3,所以它会抛出一个ArrayIndexOutOfBoundsException
!< / p>