2011-07-08 57 views
2

假設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

從技術上講,它們確實有名稱(或者至少是系統標識,這是一個特定意義上的名稱)。你幾乎不想知道他們,尤其是因爲你不能通過名字來查看他們。 –

回答

7

這裏是你想要使用數組(或列表)的地方。

實施例:

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

1

創建體育數組和學校

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說 –

2

如果你想創建許多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

0

你的意思是這樣的:

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

初始化所需的名稱的數組,然後用它來播種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'名字,那麼你是正確的,只需要一個循環。 –

0

謝謝你的答案,你認爲這也是一個正確的做法:

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