有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java单个对象重写对象数组,不确定原因

我创建了一个方法,理想情况下,该方法应该采用单个Account对象,然后将其添加到accounts数组中,但问题是,输入的Account“add”会覆盖数组中的所有现有Account,并将它们全部设置为add,我不确定原因。此外,在执行任何操作之前,数组帐户都会设置为输入的帐户“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);
  }
}

共 (1) 个答案

  1. # 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个帐户,效果会更好