簡體   English   中英

為什么以下Java代碼會拋出運行時錯誤?

[英]Why the following piece of java code throws run time 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++;
    }
}

第五行引發錯誤。

數組的第二維為空。

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

嘗試這個:

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

您需要初始化第二維

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

要么

2)

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

因為沒有指定第二個數組的維數。

這應該運行:

    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++;
        }
    }

參見可執行示例

因為您沒有指定第二維尺寸。

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)

因此,根據需要為每一行定義列大小

/ *標記數組是多維數組,其中的行具有不同的列數。 * /

 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

/ *要聲明一個衣衫array的數組,請定義一個多維數組,其中缺少最后一個維的值。

顯式定義所有行的最后一個維度的大小。 * /

您需要在初始化期間為第二個數組指定大小。 您也可以使用array的.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++;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM