Один объект переопределяет массив объектов, не знаю почему - PullRequest
2 голосов
/ 26 марта 2012

Я создал метод, который в идеале должен брать один объект 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 голос
/ 26 марта 2012

Ваш 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 учетных записей и будет работать лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...