在java中初始化for循环中的对象?

问题描述:

假设Sports,School,Home是Java中的类。 与Home有一种方法,例如在java中初始化for循环中的对象?

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的外部值。 有人可以告诉我如何初始化这些对象,并呼吁 添加方法在e,g a for循环中使用不同的对象名称在 每次迭代?

+2

这不是很清楚你的意思。循环的每次迭代有什么不同?请注意,* variable *名称与* object *名称(对象不具有名称)非常不同。 –

+0

从技术上讲,它们确实有名称(或者至少是系统标识,这是一个特定意义上的名称)。你几乎不想知道他们,尤其是因为你不能通过名字来查看他们。 –

这里是你想要使用数组(或列表)的地方。

实施例:

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

在上面的例子中,将需要一种方法来初始化sportsschools数组的内容。

或许高于这个细微变化是你所需要的:

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对象。

+0

谢谢,这个作品。 – Johnydep

创建体育数组和学校

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

这取决于。在代码中,我给你..在for循环后,你仍然有10所学校和体育..如果你不想要他们,那么你只需要一个for循环像jjnguy说 –

如果你想创建许多Home对象,每个对象都有一个SportsSchool对象,那么你会希望使用arraycollection class存储这些对象。让我们假设你正在使用的阵列来存储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); 
} 

编辑或者,你要创建只是一个Home对象并添加多个SportsSchools对象到它?然后,它的更简单:

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

他澄清说,“家”保持不变在他的问题。 – jjnguy

你的意思是这样的:

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

初始化所需的名称的数组,然后用它来播种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)); 
} 
+0

谢谢,但你不认为我会在一个循环中完成任务时使用两个循环。 – Johnydep

+0

如果你想在'h.add'的输入中使用不同的值,那么你需要比迄今提供的更多的逻辑。如果每个'h.add'使用相同的'Sports'和'School'名字,那么你是正确的,只需要一个循环。 –

谢谢你的答案,你认为这也是一个正确的做法:

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

'value'应该是一个基于for循环的某个条件给出值的变量,而不是一个表示“value”的String,但是应该可以。 –

+0

@Anthony是的,你是对的。实际上,这些值将作为字符串从JDBC连接传入,并将添加到此循环中的这些对象中 – Johnydep