Улучшено для цикла - Массив объектов - PullRequest
5 голосов
/ 02 марта 2012

Хорошо, у меня есть класс с именем 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 [] ... new Dog [5]? Может быть, глупый вопрос ... Я новичок в этом.

Так или иначе ... Меня попросили использовать «расширенный» цикл for для итерации массива, вызывающего bark ().

Так что с традиционным циклом for это будет выглядеть так:

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

Простые вещи, верно? Но как мне реализовать это, используя синтаксис for (type item: array)?

Ответы [ 3 ]

20 голосов
/ 02 марта 2012

Просто используйте его для каждого

for(Dog d : kennel) {
    d.bark();
}
10 голосов
/ 02 марта 2012

Вот как вы это делаете, используя расширенный цикл for.

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

Что касается вашего другого вопроса, если вы собираетесь использовать массивы, вам придется объявить размер, прежде чем вы начнете добавлять к нему элементы. Однако есть одно исключение, если вы выполняете инициализацию и объявление в одной строке. Например:

Dog[] dogs = {new Dog("Harold", 1), new Dog("Arnold", 2)};
0 голосов
/ 25 сентября 2012

О вашем втором вопросе: «Почему я должен начинать с Dog [] ... new Dog [5]?»

Это из-зату же логику вы должны поставить Dog dog = new Dog ();---- (1) Вот почему Dog [] dogArray = new Dog [5];--- (2)

Если у вас нет проблем с первым, зачем рассуждать о втором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...