Примечание: я изменил свой ключ hashmap
на int, если вы хотите использовать String, вам нужно внести необходимые изменения
изменения в учетной записи магазина
Ваше условие для проверки, если учетная запись уже существует, является неправильным, вы не можете использовать put
метод для этого, вместо этого используйте containsKey
public boolean store(Account account) {
/* adds a new Account to the accounts Map. The key is the account’s ID. This
* method should return a Boolean object that is "true" when the Account added
* to the ledger is being added for the first time, "false" if it is being
* updated. Check the documentation for the Map.put() method for reference.
*/
int key = account.getAccountID();
if(accounts.containsKey(key) != null){
accounts.put(key, account);
return true;
}
return false;
}
Изменения для retrieve
method:
Этот метод используется для получения учетной записи, поэтому необходимо создать новый экземпляр account
здесь.Четко указано, что если вы не нашли учетную запись, то возврат null
.
возвращает одну учетную запись с указанным идентификатором учетной записи из карты учетных записей.
Thisозначает, что метод должен иметь accountId
в качестве параметра, а затем нам нужно искать его на нашей карте.
public Account retrieve(int accountId) {
/* returns a single Account with the specified accountID from the accounts Map.
* If none is found, return null.
*/
if(accounts.containsKey(accountId)) {
return accounts.get(accountId);
}
return null;
}
изменяется на createAccount
:
1)Передавая параметры (type, firstName и lastName), как указано в вашей спецификации
2) Ваш ключ hashmap теперь будет int
, поскольку мы возвращаем int
из нашего getNextAccountID
метода.Это имеет больше смысла для меня.
3) Вызов getNextAccountID
из этой функции, поскольку это необходимо для создания новой учетной записи.
4) Я предполагаю, что у вас есть конструктор в вашем SavingAccount
и CheckingAccount
класс.если вы этого не сделаете, пожалуйста, создайте один или используйте методы set после инициализации конструктором по умолчанию.Ваш конструктор должен присвоить значение баланса 0. 0. 1049 *
public Account createAccount(String accountType, String firstName, String lastName) {
/* this method creates and returns a new Account object with the specified
* parameters (type, firstName, lastName). Calling this method should store the
* new account within the accounts Map. Please note the first parameter passed
* into this method determines which account type (CheckingAccount vs.
* SavingsAccount) to create. The values should either be “checking” or
* “savings”.
*/
int accountId = getNextAccountID();
Account acc;
if(type == "checking"){
acc = new CheckingAccount(id, type, firstName, lastName);
} else {
acc = new SavingAccount(id, type, firstName, lastName);
}
return acc;
}
Изменяется на getNextAccountID
:
1) Возвращает целое число (вы можете изменить его на long, если выхочу)
public Integer getNextAccountID() {
/*this is a helper method that can be used to find out what the next
* accountID will be based on the number of Accounts within the accounts Map.
* It should return the size of the accounts Map plus one.
*/
return accounts.size() + 1;
}