锯齿状数组循环中线程 "main" java.lang.ArrayIndexOutOfBoundsException 中的错误异常

error Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException in jagged array loop

这里是 Java 的初学者。我正在制作一个锯齿状数组程序,其中行从 10 降到 1,它们需要从 0-9

预期输出:

0  1  2  3  4  5  6  7  8  9 
1  2  3  4  5  6  7  8  9
2  3  4  5  6  7  8  9
3  4  5  6  7  8  9
4  5  6  7  8  9 
5  6  7  8  9
6  7  8  9
7  8  9
8  9
9

我有这个

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
    at Compilations.JaggedArrLab.main(JaggedArrLab.java:23)

我以前从未遇到过的错误,所以我真的不知道这意味着什么,也不知道如何解决它。

这是我的代码:

package Compilations;


public class JaggedArrLab {
   
    public static void main(String[] args) {
        int array[][] = new int [10][];
        //initializing rows from 10-1
        array [0] = new int [10];
        array [1] = new int [9];
        array [2] = new int [8];
        array [3] = new int [7];
        array [4] = new int [6];
        array [5] = new int [5];
        array [6] = new int [4];
        array [7] = new int [3];
        array [8] = new int [2];
        array [9] = new int [1];
        
         for (int i = 0; i<array.length; i++){
             for (int j=0; j<i + 1; j++){
                 array[i][j] = i + j;
             }
         }
         for (int i = 0; i<array.length;i++){
             for (int j=0; j<i + 1; j++)
               System.out.println(array[i][j] + "\t");
             
         }
         System.out.println();
    }
}

当您尝试访问未声明为数组一部分的元素时,会抛出 ArrayIndexOutOfBoundException。这通常发生在循环边界条件错误时。

添加有效的代码,请参考它并检查您的循环条件。

package Compilations;


public class JaggedArrLab {
   
    public static void main(String[] args) {
        int array[][] = new int [10][];
        //initializing rows from 10-1
        array [0] = new int [10];
        array [1] = new int [9];
        array [2] = new int [8];
        array [3] = new int [7];
        array [4] = new int [6];
        array [5] = new int [5];
        array [6] = new int [4];
        array [7] = new int [3];
        array [8] = new int [2];
        array [9] = new int [1];
        
         for (int i = 0; i< array.length ; i++){
             for (int j=0; j< array.length - i; j++){
                 array[i][j] = i + j;
             }
         }
         for (int i = 0;  i< array.length ;i++){
             for (int j=0; j< array.length - i ; j++)
               System.out.print(array[i][j] + "\t");
              System.out.println();
             
         }
         System.out.println();
    }
}

输出

0   1   2   3   4   5   6   7   8   9   
1   2   3   4   5   6   7   8   9   
2   3   4   5   6   7   8   9   
3   4   5   6   7   8   9   
4   5   6   7   8   9   
5   6   7   8   9   
6   7   8   9   
7   8   9   
8   9   
9