遍历java中的二维数组

时间:2012-01-29 22:12:48

标签: java

我在教程中观察到我可以用这种方式遍历一个对象数组:

     Animals[] an = new Animals[2];

         for (Animals a:an){
                 .
                 .
         }

但是现在我想遍历一个二维数组,当我使用这个代码时我遇到了问题(说:不兼容的类型               要求:appl1.Animals               foundLappl1.Animals [])。当我使用这段代码时

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

      for (Animals a:an){
             .
             .
       }

有谁知道如何克服这些问题。提前感谢您的帮助。

2 个答案:

答案 0 :(得分: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
    }
}

这是有效的,因为an Animals[] 对象的数组。第一个for循环遍历每个 Animals[] 。此时,您有一个Animals对象数组,因此您可以使用与上面相同的解决方案:单个for循环迭代每个Animals对象并对它们执行一些操作 - 由酮。

答案 1 :(得分:4)

二维数组实际上是一个数组数组。你需要嵌套循环:外部循环遍历数组数组,内部循环遍历每个单独数组的元素。

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

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