2012-03-26 59 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

相关问题