Инициализация объектов в цикле в Java? - PullRequest
2 голосов
/ 08 июля 2011

Предполагая, что Sports, School, Home являются классами в Java.с Home, имеющим метод, например

void add(Sports t1, School t2);

Вот что я хочу сделать:

Sports s1 = new Sports("value1");
School t2 = new School("value1");
Home h = new Home();
h.add(s1,t2);

Теперь проблема в том, что я хочу повторять эти шаги слишком много раз.h остался прежним.Так что h.add() вызывается несколько раз с различными объектами в качестве параметров со значениями, поступающими извне с использованием forloop.Может кто-нибудь показать мне, как я могу инициализировать эти объекты и вызвать метод add в e, ga for цикл с разными именами объектов в каждой итерации?

Ответы [ 6 ]

7 голосов
/ 08 июля 2011

Здесь вы хотите использовать массивы (или списки).

Пример:

Home h = new Home();
Sports[] sports = new Sports[10];
School[] schools = new School[10];
for (int i =0; i< sports.length; i++) {
    h.add(sports[i], schools[i]);
}

В приведенном выше примере вам потребуется способ инициализации содержимого массивов sports и schools.

Возможно, вам нужно это небольшое изменение выше:

Home h = new Home();
String[] sports = // existing array of sport names
String[] schools = // array of school names
for (int i =0; i< sports.length; i++) {
    h.add(new Sports(sports[i]), new School(schools[i]));
}

Здесь мы используем массивы школьных и спортивных имен для создания всех объектов, которые добавляются в Home.

2 голосов
/ 08 июля 2011

Если вы хотите создать множество объектов Home, каждый из которых имеет объект Sports и School, то вам нужно использовать коллекцию array или класс для хранения этих объектов.Предположим, вы используете массив для хранения Home объектов, тогда он может выглядеть примерно так:

// Array to store 10 Home objects
Home[] homes = new Home[10];

// Initialize each object in the array
for (int i = 0; i < homes.length; ++i) {
    homes[i] = new Home();

    // Create a Sports and a School object
    Sports sports = new Sports();
    School school = new School();

    // Add those to the i'th Home object
    homes[i].add(sports, school);
}

edit Или вы хотите создать только один Home объект и добавить несколько Sports и Schools объект к нему?Тогда это еще проще:

Home home = new Home();

for (int i = 0; i < 10; ++i) {
    // Create a Sports and a School object
    Sports sports = new Sports();
    School school = new School();

    home.add(sports, school);
}
1 голос
/ 08 июля 2011

Инициируйте массив требуемых имен, а затем используйте его для заполнения экземпляра Home.

Home h = new Home(); 
String[] names = new String[5]; 

// populate names here
// ...
// now populate Home
for (String name : names)
{     
    h.add(new Sports(name), new School(name));
} 
1 голос
/ 08 июля 2011

Создание массива Sports and School

Home h = new Home();
int count = 10;
Sports[] sports = new Sports[count];
School[] school = new School[count];
for (int i=0;i<count;i++)
{
sports[i] = new Sports();
school[i] = new School();
h.add(sports[i],school[i]);
}
0 голосов
/ 08 июля 2011

Спасибо за ответы, Вы думаете, это тоже правильный подход:

Sports s1;
School t2;
Home h = new Home();

for(int i=0; i<mysize; i++){
   s1 = new Sports("value");  //so i will change it as per the logic
   t2 = new School("value");
   h.add(s1, t2);
}

Хотя я не уверен, что это правильный подход.

0 голосов
/ 08 июля 2011

Вы имеете в виду что-то вроде этого:

Home h = new Home();
while (CONDITION) {
   Sports t1 = new Sports();
   School s1 = new School();
   h.add(t1, s1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...