2012-03-26 61 views
2

我已經創建了一個方法,理想情況下應該使用一個Account對象,然後添加一個帳戶數組,但問題是輸入的Account「add」覆蓋了每個現有的帳戶在數組中,並將它們全部等於添加,我不知道爲什麼。此外,在做任何事情之前,數組帳戶被設置爲輸入的帳戶「添加」,我完全不解這是爲什麼。對不起,如果我錯過了明顯的東西,但任何幫助將不勝感激。單個對象覆蓋一個對象數組,不知道爲什麼

public void addAccount(Account add) 
{ 
    if (count < accounts.length) 
    { 
    accounts[count] = add; 
    count++; 
    System.out.println("Added " + add.toString() + " to list of accounts"); 
    } 
    else 
    { 
    accounts = expand(10); 
    addAccount(add); 
    } 
} 
+0

考慮到這是越來越少的投票我認爲我提交了我的問題很差或不正確,因爲我道歉,請隨時解釋我可以改善我在這裏問的任何未來的問題。 – Vorfall 2012-03-26 05:13:25

+0

恕我直言downvotes有點苛刻。你可以更好地解釋這個問題,但這很清楚。歡迎來到SO :-) – 2012-03-26 05:22:49

回答

1

您的addAccount()方法看起來不錯,您的問題很可能在您的電話。根據我以前見過的人們如何得到同樣的問題,你看到它的原因很可能是你在做類似的事情;

Account account = new Account(); 
for(int i=0; i<10; i++) 
{ 
    account.Name = "Account #" + i; 
    accAccount(account); 
} 

...這將創建一個帳戶,將其更改,添加它,改變它,添加它等你需要記住的是,你要創建一個帳戶,所以以後改變它添加它會改變你之前添加到數組中的值。你需要做的是;

for(int i=0; i<10; i++) 
{ 
    Account account = new Account(); 
    account.Name = "Account #" + i; 
    accAccount(account); 
} 

這將創建10個帳戶,並會更好地工作。

+0

問題恰恰在於,我已經在全局聲明瞭我的帳戶變量,但是通過在循環中本地聲明它可以解決我的問題。非常感謝你。 – Vorfall 2012-03-26 05:05:57

+4

@Vore現在Joachim已經給你提供了答案(+1精通閱讀,Joachim),你應該通過點擊左上方的複選標記來「接受」他的答案。 – 2012-03-26 05:21:40

+0

我這樣做了,謝謝你讓我知道這個功能 – Vorfall 2012-04-18 21:22:56

相關問題