Johnydep
Johnydep

Reputation: 6277

Initializing objects in a for loop in java?

Assuming Sports, School, Home are classes in Java. with Home having a method e.g.

void add(Sports t1, School t2);

Here is what i want to do:

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

Now the problem is, i want to repeat these steps too many times. with h remaining the same. So that h.add() is called multiple times with different objects as parameters with values coming from outside using forloop. can someone show me how can i initialize these objects and call the add method in e,g a for loop with different object names in each iteration?

Upvotes: 2

Views: 13728

Answers (6)

Johnydep
Johnydep

Reputation: 6277

Thank you for the answers, Do you think this is also a correct approach:

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);
}

I am not sure though if this the right approach.

Upvotes: 0

Steve Townsend
Steve Townsend

Reputation: 54178

Init an array of the required names and then use it to seed the Home instance.

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));
} 

Upvotes: 1

nfechner
nfechner

Reputation: 17545

Do you mean something like this:

Home h = new Home();
while (CONDITION) {
   Sports t1 = new Sports();
   School s1 = new School();
   h.add(t1, s1);
}

Upvotes: 0

Jesper
Jesper

Reputation: 207006

If you want to create many Home objects, each of which have a Sports and a School object, then you'll want to use an array or a collection class to store those objects. Let's assume you're using an array to store the Home objects, then it could look something like this:

// 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 Or, do you want to create just one Home object and add multiple Sports and Schools object to it? Then it's even simpler:

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);
}

Upvotes: 2

Sherif elKhatib
Sherif elKhatib

Reputation: 45942

Create an array of 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]);
}

Upvotes: 1

jjnguy
jjnguy

Reputation: 138972

Here is where you will want to use arrays (or lists).

Example:

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]);
}

In the above example you will need a way to initialize the contents of the sports and schools arrays.

Perhaps this slight variation of above is what you need:

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]));
}

Here we use arrays of school and sport names to create all of the objects that get added to Home.

Upvotes: 7

Related Questions