![](/img/trans.png)
[英]Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
[英]Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 5
我需要当前正在做的一些数组分配方面的帮助。 到目前为止,我设法纠正了全部代码,但是这一问题仍然存在。
public class AssignmentArray1 {
public static void main(String[] args) {
int a[][] = new int[ 10 ][ 5 ];
for ( int i = 0; i < a.length; i++ )
{
for ( int j = 0; j < a[ i ].length; j++ ) {
a[ j ][ i ] = j;
}
}
for ( int i = 0; i < a.length; i++ )
{
for ( int j = 0; j < a[ i ].length; j++ )
System.out.printf( "%d ", a[ j ][ i ] );
System.out.println();
}
}
}
这怎么了 我不明白为什么会收到错误消息
线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:在atsignationarray1.AssignmentArray1.main(AssignmentArray1.java:25)处为5
因此显然a[ j ][ i ] = j;
? 但是到底是什么?
看来您不小心将索引换成了a
数组。
这个:
a[ j ][ i ] = j;
应该:
a[ i ][ j ] = j;
和这个:
System.out.printf( "%d ", a[ j ][ i ] );
应该:
System.out.printf( "%d ", a[ i ][ j ] );
您两个循环中的结束条件是错误的处理方式。 解决此问题的最简单方法是如下更改分配:
a[ i ][ j ] = i;
您还需要修复第二对嵌套循环。
从,
a[ j ][ i ] = j;
至,
a[ i ][ j ] = j;
根据数组声明, a.length = 10
和a[i].length=5
。
现在,在此for循环中
for ( int i = 0; i < a.length; i++ )
{
for ( int j = 0; j < a[ i ].length; j++ ) {
a[ j ][ i ] = j;
}
}
按照数组边界0<=i<10
和0<=j<5
,但是a[ j ][ i ] = j;
该语句违反了数组的边界条件,因为i
可以上升到9,但只允许在[0,5)范围内,所以ArrayIndexOutOfBoundException
很明显。
检查您的循环并修复索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.