为什么下面这段java代码会抛出运行时错误?

时间:2014-01-25 10:47:54

标签: java runtime-error

int[][] input = new int[3][];
int count = 1;

for(int i = 0; i <= 2 ; i++ ) {
    for(int j = 0; j <= 2; j++) {
        input[i][j] = count++;
    }
}

第五行引发错误。

6 个答案:

答案 0 :(得分:1)

数组的第二维是空的。

int[][] input = new int[3][];

试试这个:

int[][] input = new int[3][3]; 

答案 1 :(得分:0)

您需要初始化第二个维度

1)int[][] input = new int[3][3];

2)

for(int i = 0; i <= 2 ; i++ ){
    input[i] = new int[3];
}

答案 2 :(得分:0)

因为未指定第二个数组维度。

这应该运行:

    int[][] input = new int[3][3];
    int count = 1;
    for(int i = 0; i <= 2 ; i++ ){
        for(int j = 0; j <= 2; j++){
            input[i][j] = count++;
        }
    }

请参阅executable示例

答案 3 :(得分:0)

因为您没有指定第二个尺寸。

答案 4 :(得分:0)

int[][] input = new int[3][];

这种类型的数组称为不规则数组。 您必须为每个定义的大小。像这样:

input[0]=new int[2];//for row 1 (row 1 contain 2 column)
input[1]=new int[5];//for row 2 (row 2 contain 5 column)
input[2]=new int[1];// for row 3 (row 3 contain 1 column)

因此,您可以根据需要定义每行的列大小

/ *衣衫褴褛的数组 是多维数组,其中 行有不同的cols。 * /

 class Ragged
    {
     public static void main(String args[])
     {
       //declaration of a ragged array
       int arr[][] = new int[3][];
       //declaration of cols per row
       arr[0] = new int[4];
       arr[1] = new int[2];
       arr[2] = new int[3];

       int i, j;

       for(i =0; i< arr.length; i++)
       {
        for(j =0 ; j< arr[i].length; j++)
        {
           arr[i][j] = i + j+ 10;
        }
       }

       for(i =0; i< arr.length; i++)
       {
        System.out.println();//skip a line
        for(j =0 ; j< arr[i].length; j++)
        {
           System.out.print(arr[i][j]  + "  ");
        }
       }




//-------------more----------------
   int temp[];//int array reference
   //swap row2 and row3 of arr
   temp = arr[1];
   arr[1] = arr[2];
   arr[2] = temp;


   System.out.println();//skip a line
   for(i =0; i< arr.length; i++)
   {
    System.out.println();//skip a line
    for(j =0 ; j< arr[i].length; j++)
    {
       System.out.print(arr[i][j]  + "  ");
    }
   }

 }//main
}//class

/ * 声明一个参差不齐的数组定义一个 带有val的多维数组 最后一个维度缺失。

明确定义大小 所有行的最后一个维度。 * /

答案 5 :(得分:0)

您需要在初始化期间指定第二个数组的大小。 您还可以使用数组的.length属性来避免硬编码大小。

int[][] input = new int[3][3];
int count = 1;

for(int i = 0; i <= input.length ; i++) {
    for(int j = 0; j <= input[i].length; j++) {
        input[i][j] = count++;
    }
}