2012-01-29 2 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 
    } 
} 

なぜこの仕事をしますか? (ここでは便宜上転載)あなたの最初の例で

ルック:anAnimalsオブジェクトの配列であるため、

Animals[] an = new Animals[2]; 

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

これは動作します。 forループは各Animalsオブジェクトを反復し、1つずつアクションを実行します。

は今(再び、文脈のためにここに再掲)上に掲載私の答えを見て:

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ループを1つずつ実行して、Animalsオブジェクトを1つずつ繰り返し、それらに対してアクションを1つずつ実行します。

4

2次元配列は実際には配列の配列です。ネストされたループが必要です。外側のループは配列の配列を通り、内側のループは個々の配列の要素を通過します。

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

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

これは正しいです。 1つのループでこれを行うことはできません...難しいことではありません。 –

関連する問題