我在教程中观察到我可以用这种方式遍历一个对象数组:
Animals[] an = new Animals[2];
for (Animals a:an){
.
.
}
但是现在我想遍历一个二维数组,当我使用这个代码时我遇到了问题(说:不兼容的类型 要求:appl1.Animals foundLappl1.Animals [])。当我使用这段代码时
Animals[][] an = new Animals[2][2];
for (Animals a:an){
.
.
}
有谁知道如何克服这些问题。提前感谢您的帮助。
答案 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.
}
这是有效的,因为an
是Animals
个对象的数组。 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){
.
.
}
}