используя добавление / получение HashMap и многое другое - PullRequest
0 голосов
/ 11 февраля 2019

РЕДАКТИРОВАТЬ: у меня есть два других класса, называемые CheckingAccount и SavingsAccount.Я также добавляю код своей учетной записи.

У меня есть учетная запись класса, и я работаю с другой книгой класса, которая является связью HAS-A с учетной записью.В Ledger я использую HashMap <> (), чтобы создать систему хранения для разных учетных записей.Я думаю, что у меня есть большая часть правильного кодирования, ожидаю двух последних методов.Если кто-то может объяснить или дать указание в правильном направлении для последних двух методов и перейти к моей другой работе, это также поможет.Ниже каждого метода находится блок комментария о том, что метод должен делать и возвращать.Спасибо.

/**
 * @author Deborah
 *
 */
public abstract class Account {

protected String accountID;
protected double balance;
protected String accountType;
protected String firstName;
protected String lastName;

public String getAccountID() {
    return this.accountID;
}

public double getBalance() {
    return this.balance ;
}

public String getAccountType() {
    return this.accountType;
} 

public String getFirstName() {
    return this.firstName;
}

public String getLastName() {
    return this.lastName;
}

public void setAccountID(String accountID) {
    this.accountID = accountID;
}

public void setBalance(double balance) {
    this.balance = balance;
}

public void setAccountType(String accountType) {
    this.accountType = accountType;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String toString() {
    return "Account ID: " + accountID + "\n" +
            "Account Type: " + accountType + "\n" +
            "Balance: $" + balance + "\n";
}

public abstract IAccountManager getAccountManager();

}

public class Ledger {
    //the single instance of Ledger
    private static final Ledger instance = new Ledger();

    //create accounts: Map<String, Account>
    //use to add an Account, retrieve an Account, ect...

    HashMap<String, Account> accounts = new HashMap<>();

    //private constructor    
    private Ledger() {}

    //method to return the single instance
    public static Ledger getInstance(){
        return instance;
    }

    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.
         */
        String key = account.getAccountID();
        if(accounts.put(key, account) != null){
            accounts.put(key, account);
            return true;
        }
        return false;
    }   


    public Account retrieve() { 
        /* returns a single Account with the specified accountID from the accounts Map.
         * If none is found, return null.
         */ 
        Account account = new Account();
        String key = account.getAccountID();
        if(accounts.containsKey(key)) {
            return account;
        }
        return null;
    }


    public Account createAccount(Account account) {
        /* 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”.
         */
        String key = account.getAccountType();

        if(accounts.containsKey("Checking")) {                          
            accounts.put(key,account);
            return account;
        }else{
            accounts.put(key,account);
            return account;

        }
    }

    public Account 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;
    }

    public Ledger getAllAccounts() {
        /*this method returns a list of all the Accounts w/in the accounts Map
         */
        return null;
    }
}

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Примечание: я изменил свой ключ 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;
}
0 голосов
/ 11 февраля 2019

в первую очередь этот метод getNextAccountID должен возвращать int

, а для второго я предлагаю

 public List<Account> getAllAccounts() {
        Set<Account> allaccounts = accounts.values(); 
        LinkedList<Account> l ; 
        l.addAll(allacounts);
        return l; 
  }

в своем предложении, я пытался сохранить учетные записи в набореиспользуя значения метода в карте интерфейса, а затем добавьте все учетные записи, сохраненные в наборе, в список и, наконец, верните список, я надеялся, что это будет полезно.

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