【问题标题】:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:5
【发布时间】:2017-04-04 04:32:00
【问题描述】:

我目前正在做的一个小数组分配需要帮助。到目前为止,我设法纠正了一些代码,但这个问题仍然存在..

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();
        }
    }

}

这有什么问题?我不明白为什么我会收到错误消息

线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 5 at assignmentarray1.AssignmentArray1.main(AssignmentArray1.java:25)

那么显然a[ j ][ i ] = j; 有问题?但究竟是什么?

【问题讨论】:

  • a[ i ][ j ]替换a[ j ][ i ](在两个循环中)

标签: java arrays indexoutofboundsexception


【解决方案1】:

您的索引似乎意外地换成了 a 数组。

这个:

            a[ j ][ i ] = j;

应该是:

            a[ i ][ j ] = j;

还有这个:

            System.out.printf( "%d ", a[ j ][ i ] );

应该是:

            System.out.printf( "%d ", a[ i ][ j ] );

【讨论】:

    【解决方案2】:

    两个循环中的结束条件是错误的。解决此问题的最简单方法是按如下方式更改分配:

                a[ i ][ j ] = i;
    

    您还需要修复第二对嵌套循环。

    【讨论】:

      【解决方案3】:

      改变,

      a[ j ][ i ] = j;
      

      到,

      a[ i ][ j ] = j;
      

      【讨论】:

        【解决方案4】:

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

        检查你的 for 循环并修复索引。

        【讨论】:

          猜你喜欢
          • 2015-02-27
          • 1970-01-01
          • 2012-01-13
          • 2011-09-09
          • 2016-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多