How to access/populate key and value pairs of a Hashmap from an instantiated Class in Main
BankAccount.java
/**
* Mimics bank account program with 'deposit', 'withdraw', and 'transfer' functionalities
*/
public class BankAccount
{
private double balanceCad;
private final String accountNumber;
private final String lastName;
/**
* @param balanceCad balance of bank account in CAD (canadian dollars)
* @param accountNumber unique bank account number of person
* @param lastName last name of the bank account owner
*/
public BankAccount(final double balanceCad,
final String accountNumber,
final String lastName)
{
this.balanceCad = balanceCad;
this.accountNumber = accountNumber;
this.lastName = lastName;
}
/**
* Withdraws money from bank account in CAD (canadian dollars)
* @param amountCad amount of money in CAD (canadian dollars)
*/
public void withdrawMoneyCad(double amountCad)
{
this.balanceCad -= amountCad;
}
/**
* Deposits money into bank account in CAD (canadian dollars)
* @param amountCad amount of money in CAD (canadian dollars)
*/
public void depositMoneyCad(double amountCad)
{
this.balanceCad += amountCad;
}
/**
* Transfers amount of money in CAD into another bank account number
* @param amountCad amount of money in CAD
* @param recipientAccount account number of person receiving the transferred money in CAD (canadian dollars)
*/
public void transferMoneyCad(double amountCad,
final BankAccount recipientAccount)
{
recipientAccount.depositMoneyCad(amountCad);
this.withdrawMoneyCad(amountCad);
}
// Accessors
/**
*
* @return balance amount in CAD (canadian dollars)
*/
public double getBalanceCdn()
{
return balanceCad;
}
/**
* @return the unique bank account number of person
*/
public String getAccountNumber()
{
return accountNumber;
}
/**
* @return the unique last name of the bank account member
*/
public String getMemberLastName()
{
return lastName;
}
}
Bank.java
/**
* Mimics a bank program that tells info about different bank accounts
*/
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Bank {
private final String bankName;
private final Map<String, BankAccount> bankAccounts;
public Bank(final String bankName)
{
this.bankName = bankName;
this.bankAccounts = new HashMap<>();
}
public void addAccount(BankAccount newBankAccount)
{
this.bankAccounts.put(newBankAccount.getAccountNumber(), newBankAccount);
}
public BankAccount getAccount(String accountNumber)
{
return this.bankAccounts.get(accountNumber);
}
public void removeAccount(String accountNumber)
{
this.bankAccounts.remove(accountNumber);
}
public int getNumberOfAccounts()
{
return this.bankAccounts.size();
}
public double getTotalAccountsBalance()
{
double totalCdn = 0.0;
for (BankAccount account : this.bankAccounts.values()) {
totalCdn += account.getBalanceCdn();
}
return totalCdn;
}
public void depositTo(double amountCdn, String accountNumber)
{
this.bankAccounts.get(accountNumber).depositMoneyCad(amountCdn);
}
public void printAllCustomerData()
{
final Iterator<String> it;
it = this.iterator();
while (it.hasNext())
{
final String theNextKey;
theNextKey = it.next();
System.out.printf("Customer %s has $%.2f in account #%s\n",
theNextKey, bankAccounts.get(theNextKey), accountNumber);
}
System.out.printf("Total bank balance in all accounts for %s is %.2f\n",
this.bankName, this.getTotalAccountsBalance());
}
}
Main.java
public class Main {
public static void main(final String[] args)
{
final Bank bank;
final BankAccount account1;
final BankAccount account2;
final BankAccount account3;
final BankAccount account4;
bank = new Bank("Bank of Kanada");
account1 = new BankAccount(100.0,
"abc111",
"woods");
account2 = new BankAccount(200.0,
"def222",
"gates");
account3 = new BankAccount(300.0,
"ghi333",
"bezos");
account4 = new BankAccount(400.0,
"jkl444",
"zuckerberg");
bank.addAccount(account1);
bank.addAccount(account2);
bank.addAccount(account3);
bank.addAccount(account4);
bank.depositTo(22.22, "def222");
bank.getAccount("abc111").transferMoneyCad(5.00, bank.getAccount("ghi333"));
bank.printAllCustomerData();
}
}
My printAllCustomerData() function is messed up; I want my Hashmap to dynamically get keys and values from Main ---> BankAccount initializations
I'm expecting an output of:
Customer Woods has $95.00 in account #abc111
Customer Gates has $222.22 in account #def222
Customer Bezos has $305.00 in account #ghi333
Customer Zuckerberg has $400.00 in account #jkl444
Total bank balance in all accounts for Bank of Kanada is 1022.22
change the code to
or try this code ,
and she will run very will