2014-04-14 39 views
0

是否有人會介意澄清我到底能夠獲得一個for循環以遞增到我的代碼塊中的下一個對象?我知道外部正在遞增1,但是,像這樣的代碼在for循環中增加1,因爲在這種情況下,每個元素代表一個單獨的對象。建議將非常感謝!For循環的澄清

// create object 
    AccountWithInterface accountTemplate = new AccountWithInterface(name, balance, id, rate); 

    // declare array of 3 objects 
    AccountWithInterface[] accountArray = new AccountWithInterface[3]; 


    // create each accountArray object 
    for(int i = 0; i < accountArray.length; i++) { 
     // copy each element (object) from accountTemplate 
     accountArray[i] = (AccountWithInterface)accountTemplate.clone(); 
     // set balance for first object 
     accountArray[i].setBalance(85900.32); 
     // increment to next object/set object 
     accountArray[i].setBalance(3250.99); 
     System.out.println(accountArray[i].toString()); 
    } 


      // My output currently keeps printing: 
    ID:       1122 
    Created:     04/13/14 
    Owner:       Bob 
    Annual Rate:     4.50% 
    Balance:     3,250.99 

    ID:       1122 
    Created:     04/13/14 
    Owner:       Bob 
    Annual Rate:     4.50% 
    Balance:     3,250.99 

    ID:       1122 
    Created:     04/13/14 
    Owner:       Bob 
    Annual Rate:     4.50% 
    Balance:     3,250.99 
+0

實際上澄清如何增加下一個對象是我認爲我真的不瞭解這裏。 – user3434674

+0

'accountArray'中有空值。 –

+1

「增加到下一個對象」是什麼意思...?你正在遞增'i',因此通過訪問你在數組中移動的循環內的數組索引'[i]'。 'i'是0,然後是1,然後是2.那不是你想要的嗎? –

回答

3

這真的很難說你問什麼,但採取的猜測...如果你想設置特定對象的平衡,只是做外循環:

// create each accountArray object 
for(int i = 0; i < accountArray.length; i++) { 
    // copy each element (object) from accountTemplate 
    accountArray[i] = (AccountWithInterface)accountTemplate.clone(); 
} 

// set balance for first object 
accountArray[0].setBalance(85900.32); 
// set balance for second object 
accountArray[1].setBalance(3250.99); 

for(int i = 0; i < accountArray.length; i++) { 
    System.out.println(accountArray[i].toString()); 
} 

另一種選擇是:

// create each accountArray object 
for(int i = 0; i < accountArray.length; i++) { 
    // copy each element (object) from accountTemplate 
    accountArray[i] = (AccountWithInterface)accountTemplate.clone(); 
    if (i == 0) 
     accountArray[i].setBalance(85900.32); 
    else if (i == 1) 
     accountArray[i].setBalance(3250.99); 
    System.out.println(accountArray[i].toString()); 
} 

甚至是這樣的:

double[] balances = new double[] {85900.32, 3250.99}; 

// create each accountArray object 
for(int i = 0; i < accountArray.length; i++) { 
    // copy each element (object) from accountTemplate 
    accountArray[i] = (AccountWithInterface)accountTemplate.clone(); 
    if (i < balances.length) 
     accountArray[i].setBalance(balances[i]); 
    System.out.println(accountArray[i].toString()); 
} 

什麼是最適合你的情況。你有很多選擇。

+1

我真的不是第二種選擇的粉絲,但我同意第一個和第三個選項。 – Makoto

+0

@Makoto同意;整個事情總體上有點臭。我想知道爲什麼OP需要這樣做,可能有更高層次的方法來組織這些代碼。 –

+1

謝謝賈森我試圖保持一切都在一個循環。我知道我可以爲每個對象分開setter,但我想我試圖留在循環內。感謝您澄清現在使用您的代碼。謝謝+1 – user3434674