2012-01-29 93 views
1

一個2維陣列我看在一個教程,我可以遍歷對象的陣列中的這種方式:遍歷的java

 Animals[] an = new Animals[2]; 

     for (Animals a:an){ 
       . 
       . 
     } 

但現在我想遍歷一個2維陣列和當我使用這代碼我有一個問題(說:不兼容的類型 要求:appl1.Animals foundLappl1.Animals [])。當我使用此代碼

Animals[][] an = new Animals[2][2]; 

     for (Animals a:an){ 
      . 
      . 
     } 

有誰知道我該如何克服這個問題。預先感謝您的幫助。

回答

5

您將需要使用嵌套循環,如下:

Animals[][] an = new Animals[2][2]; 

for (Animals[] inner : an) { 
    for (Animals a : inner) { 
     // Execute code on "Animals" object a 
    } 
} 

爲什麼這項工作?

看看你的第一個例子(轉貼在這裏爲方便起見):

Animals[] an = new Animals[2]; 

for (Animals a : an) { 
    // Do stuff here. 
} 

這工作,因爲anAnimals對象的數組。 for循環遍歷每個Animals對象,逐個對它們執行一些操作。

現在看我的回答上面貼(再次,轉貼在這裏爲背景):

Animals[][] an = new Animals[2][2]; 

for (Animals[] inner : an) { 
    for (Animals a : inner) { 
     // Execute code on "Animals" object a 
    } 
} 

這工作,因爲anAnimals[]對象的數組。第一個for循環遍歷每個Animals[]。此時,您有一組Animals對象,因此您可以使用與上面相同的解決方案:單個for循環遍歷每個Animals對象並逐個對它們執行一些操作。

4

一個二維數組實際上是一個數組數組。您需要嵌套循環:外循環遍歷數組數組,內循環遍歷每個單獨數組的元素。

Animals[][] ann = new Animals[2][2]; 

for (Animals[] an:ann){ 
    for (Animals a:an){ 
     . 
     . 
    } 
} 
+0

這是正確的。你不能用一個循環來做到這一點......並非沒有困難。 – 2012-01-29 22:15:39