2013-02-16 42 views
0

任何人都可以解釋我下面的代碼是什麼意思.. ??Java中多維數組的使用情況

for (j = 0; j < arrayOfInts[i].length; j++)

我學習Java語言和有一個非常艱難的時間計算出來..

class BreakWithLabelDemo { 
     public static void main(String[] args) { 

      int[][] arrayOfInts = { 
       { 32, 87, 3, 589 }, 
       { 12, 1076, 2000, 8 }, 
       { 622, 127, 77, 955 } 
      }; 
      int searchfor = 12; 

      int i; 
      int j = 0; 
      boolean foundIt = false; 

     search: 
      for (i = 0; i < arrayOfInts.length; i++) { 
       for (j = 0; j < arrayOfInts[i].length; 
        j++) { 
        if (arrayOfInts[i][j] == searchfor) { 
         foundIt = true; 
         break search; 
        } 
       } 
      } 

      if (foundIt) { 
       System.out.println("Found " + searchfor + " at " + i + ", " + j); 
      } else { 
       System.out.println(searchfor + " not in the array"); 
      } 
     } 
    } 

回答

0

在Java二維數組實現的是單一個一維數組二維數組。

for (j = 0; j < arrayOfInts[i].length; j++) 

arrayOfInts[i].length指arrayOfInts的第i行的長度。

int[][] a = new int[2][4]; 

這個二維數組將有兩行四列。這實際上分配了3個對象:一個由2個元素組成的一維數組來保存每個實際的行數組,以及兩個由4個元素組成的一維數組來表示行的內容。

+-----+ +-----+-----+-----+-----+ 
|a[0] | -> | [0] | [1] | [2] | [3] | 
|  | +-----+-----+-----+-----+ In Java two-dimensional arrays are implemented is a 
             one-dimensional array of one-dimensional arrays -- like this. 
+-----+ 
|  | +-----+-----+-----+-----+ 
|a[1] | -> | [0] | [1] | [2] | [3] | 
+-----+ +-----+-----+-----+-----+ 
1

Java中沒有多維數組。所有有數組的數組。

arrayOfInts就是這樣一個整數數組的數組。所以arrayOfInts[i]是整數數組,和

for (j = 0; j < arrayOfInts[i].length; j++) 

遍歷該數組的每個元素,即,它遍歷存儲整數的數組的數組的索引i在整數的數組中的所有元素。

你可以看到它是一個包含N個小盒子的大盒子,每個小盒子包含給定數量的整數。 arrayOfInt是大箱子。 arrayOfInt[i]i大箱子裏的小箱子。循環遍歷這個小框中的每個整數。

+1

'有一個在Java'沒有多維數組。在多維數組中,「多維」數組只有'數組數組',但它被稱爲'多維數組'。'多維數組'和'數組數組'沒有區別。 – 2013-02-16 13:19:16

+1

[帕斯卡](http://www.tutorialspoint.com/pascal/pascal_multi_dimensional_arrays.htm)有多維數組,以及[C#](http://stackoverflow.com/questions/8177984/what-is-the-定義-的-A-真多維數組,和什麼語言-SUP),例如。我相信其他語言也有它們。主要的區別是,在多維數組的所有行具有相同的長度,這是不在數組的數組的情況。另一個原因是一行在多維數組中可能不爲空,而它可能在一個數組數組中。 – 2013-02-16 13:34:24

+0

'Multidimensional array'與'array of array'.in在2d數組中具有2個數組相同,如果所有1d數組都具有相等的長度,儘管它將被稱爲數組的數組。
否則,即使一個1D陣列有不同的號碼。的元素而不是另一個元素,它也是'array of array',但它是'鋸齒狀' – 2013-02-17 03:14:01

2

Java並沒有真正的多維數組,它具有可以包含其他數組的數組。該代碼採用誤導性名稱爲arrayOfIntsi第th項。這個項目本身就是一個整數數組,所以它取得了這個數組的length。 (已存儲在另一個陣列。)因此,例如在這樣的代碼:

int[][] array2d = new int[][] { 
    new int[] {1},  // stored at array2d[0] 
    new int[] {2, 3, 4} // stored at array2d[1] 
} 

在以下情況成立:

  • array2d.length == 2(該 「多維」 數組包含其他兩個陣列)
  • array2d[0].length == 1(其中的第一個具有一個元素:1
  • array2d[1].length == 3(第二有三個要素:234
0

J = 0。 j < arrayOfInts [i]。長度

因爲你陣列是2維的,陣列的內部元件將陣列。

所以你獲得元件(這是陣列)arrayOfInts [i]和計算出的長度arrayOfInts [I]。長度,換句話說:

INT []元素= arrayOfInts [I] ; INT長度= arrayOfInts [I]。長度;

0

思考arrayOfInts [i] [j]爲一個二維網格,如電子表格。爲了幫助可視化,假設[j]代表列索引,[i]代表行索引。

的解釋是,則:

// iterate through every column j in the current row i: 
for (j = 0; j < arrayOfInts[i].length; j++) 
0

在代碼中,看到單詞int [][]arrayOfInts=...
它是一個2維陣列。
2維陣列都不過arrays of arrays
這意味着簡單地將有許多正常的1-d陣列,和具有每1-d陣列的引用另一個陣列。
因此,行的解釋,for(j=0;j<arrayOfInts[i].length;j++)在下面給出:
首先,讓我們把焦點的話arrayOfInts[i].length
我已經告訴過你arrayOfInts是一個數組的數組。所以,arrayOfInts[i]指向i第array.The字,arrayOfInts[i].length返回arrayOfIntsi個陣列中的長度(即數組中的元素的數量)。
循環繼續發生,直到j小於1d數組中的元素數(小於(不等於),因爲arrayOfInts [i] [0]將是第一個元素)。