增强的For循环 - 对象数组

时间:2012-03-02 09:17:47

标签: java arrays foreach

好的,我有一个名为Dog()的类,它有两个参数,一个字符串和一个整数 这个类有一个名为bark()的方法,它根据传递给Dog()构造函数的整数打印一个字符串。

我还有一个名为Kennel()的类,它创建了一个包含5个Dog()的数组......看起来像这样:

public class Kennel
{
    Dog[] kennel = new Dog[5];
    public Kennel()
    {
        kennel[0] = new Dog("Harold",1);
        kennel[1] = new Dog("Arnold",2);
        kennel[2] = new Dog("Fido",3);
        kennel[3] = new Dog("Spot",4);
        kennel[4] = new Dog("Rover",5);
    }
}

首先,这有效,但似乎错了。为什么我要从Dog [] ......新狗[5]开始?也许是愚蠢的问题......我是新手。

无论如何......我被要求做的是使用“enhanced”for循环来遍历调用bark()的数组。

因此,对于传统的for循环,它看起来像这样:

for (i=0;i<kennel.length;i++)
{
    kennel[i].bark();
}

简单的东西,对吗?但是如何使用for(type item:array)语法实现这一点?

3 个答案:

答案 0 :(得分:20)

只需在每个

中使用它
for(Dog d : kennel) {
    d.bark();
}

答案 1 :(得分:10)

以下是使用增强型for循环的方法。

for(Dog dog : kennel) {
    dog.bark();
}

对于您的其他问题,如果您要使用数组,则必须在开始向其添加元素之前声明大小。但是,如果您在同一行中进行初始化和声明,则有一个例外。例如:

Dog[] dogs = {new Dog("Harold", 1), new Dog("Arnold", 2)};

答案 2 :(得分:0)

关于你的第二个问题:“为什么我必须从Dog [] ...新狗[5]开始?”

因为你必须提出相同的逻辑  狗狗=新狗(); ----(1) 这就是为什么Dog [] dogArray = new Dog [5]; ---(2)

如果你对第一个问题没有问题,那么为什么要选择第二个问题。