我一直在試圖弄清楚到底發生了什麼。我只是想弄清楚下面我已經評論過的兩行代碼。我發現這個程序沒有聲明數組的完整維數(而不是new int [10] [5];它只是決定不用聲明'new int [10] [];'它就像第二個數組的長度沒有關係(將其更改爲1或100不影響輸出)。Java:聲明一個沒有指定數組大小的多維數組(例如new int [10] [])
int[][] tri = new int[10][]; //this lack of giving the size of the 2nd array is strange
for (int r=0; r<tri.length; r++) {
tri[r] = new int[r+1]; //I'm not sure what this line is doing really
}
for (int r=0; r<tri.length; r++) {
for (int a=0; a<tri[r].length; a++) {
System.out.print(tri[r][a]);
}
System.out.println();
}
[對不起我的最後的評論是不完整,我無法將其刪除]因此,它似乎是第一個數組的長度必須始終聲明,但在此之後,數組長度的長度可以在現場創建? (例如new int [10] [];因爲它聲明瞭第一個長度,所以是可以的)。另外行'tri [r] = new int [r + 1];'似乎創建數組的第二部分,但是有可能使這個數組大於第一個(當我這樣做會創建異常)? – 2012-03-28 14:17:52
總共有11個陣列。第一個數組是其他10個數組的數組。 'new int [10] []'說:「讓我成爲一個可以容納'int []'對象的數組,併爲它們設置10個插槽。」你的代碼片段的第三行說:「用'r + 1'插槽創建一個int數組,並將新數組放入已存在的數組'r'中。」您可以根據需要將11個陣列中的任何一個設置爲大或小。所有11種尺寸都是獨立的。 – 2012-03-28 14:27:01