Bank.java import java.util.ArrayList;
import java.io.IOException;
import java.io.File;
import java.util.Scanner;
import java.util.NoSuchElementException;
/**
A bank contains account numbers and balances of each customer.
*/
public class Bank
{
private ArrayList<BankAccount> accountList;
/**
Construct a Bank object.
*/
public Bank()
{
accountList = new ArrayList<BankAccount>();
}
/**
Read a file with account numbers and balances and adds the accounts
to the bank.
@param filename the name of the file
*/
public void readFile(String filename) throws IOException
{
. . .
}
/**
Add an account to the bank.
@param b the BankAccount reference
*/
public void addAccount(BankAccount b)
{
accountList.add(b);
}
/**
Gets the account with the highest balance.
@return the account with the highest balance
*/
public BankAccount getHighestBalance()
{
BankAccount max = accountList.get(0);
for (BankAccount account : accountList)
{
if (account.getBalance() > max.getBalance())
max = account;
}
return max;
}
}
BankAccount.java import java.util.Scanner;
import java.io.IOException;
import java.util.InputMismatchException;
/**
A bank account has a balance that can be changed by deposits and withdrawals.
*/
public class BankAccount
{
private double balance;
private int accountNumber;
/**
Constructs a bank account with a zero balance.
*/
public BankAccount()
{
accountNumber = 0;
balance = 0;
}
/**
Constructs a bank account with a given balance.
@param initialBalance the initial balance
*/
public BankAccount(int anAccountNumber, double initialBalance)
{
accountNumber = anAccountNumber;
balance = initialBalance;
}
/**
Reads an account number and balance.
@param in the scanner
@return true if the data was read
false if the end of the stream was reached
*/
public void read(Scanner in) throws IOException
{
. . .
}
/**
Deposits money into the bank account.
@param amount the amount to deposit
*/
public void deposit(double amount)
{
balance = balance + amount;
}
/**
Withdraws money from the bank account.
@param amount the amount to withdraw
*/
public void withdraw(double amount)
{
balance = balance - amount;
}
/**
Gets the current balance of the bank account.
@return the current balance
*/
public double getBalance()
{
return balance;
}
/**
Gets the account number of the bank account.
@return the account number
*/
public int getAccountNumber()
{
return accountNumber;
}
}
Use the following file:
BankReader.java
import java.util.Scanner;
import java.io.IOException;
/**
This program prompts the user to enter a file name
with account information. A bank object is filled with
the account numbers and balances specified in the file.
In case of an exception, the user can choose another file.
*/
public class BankReader
{
public static void main(String[] args)
{
boolean done = false;
Scanner in = new Scanner(System.in);
while (!done)
{
System.out.print("Filename: ");
String filename = in.next();
try
{
Bank bank = new Bank();
bank.readFile(filename);
BankAccount highest = bank.getHighestBalance();
System.out.println(highest.getAccountNumber()
+ " " + highest.getBalance());
done = true;
}
catch (IOException e)
{
System.out.println(e);
}
}
}
}