繁体   English   中英

线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:5

[英]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 = 10a[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<100<=j<5 ,但是a[ j ][ i ] = j; 该语句违反了数组的边界条件,因为i可以上升到9,但只允许在[0,5)范围内,所以ArrayIndexOutOfBoundException很明显。

检查您的循环并修复索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM