L11
InsufficientFunds.java
public class InsufficientFunds extends RuntimeException{
public InsufficientFunds(){
}
public InsufficientFunds(String msg){
super(msg); // use superclass constructor
}
}
BankAccount.java
public class BankAccount{
private double balance;
public BankAccount(){
balance = 0;
}
public BankAccount(double initialBalance){
balance = initialBalance;
}
public void deposit(double amount){
balance = balance + amount;
}
public void withdraw(double amount){
if(amount <= balance)
balance = balance - amount;
else{
InsufficientFunds myEx = new InsufficientFunds("Amount Exceeds Balance");
throw myEx;
}
}
public double getBalance(){
return balance;
}
}
CheckingAccount.java
public class CheckingAccount extends BankAccount
{
private int transactionCount;
public CheckingAccount(){
transactionCount = 0;
}
public CheckingAccount(double initialBalance){
super(initialBalance); //use the super class constructor that's already coded
transactionCount = 0;
}
public void deposit(double amount){
super.deposit(amount);
transactionCount = transactionCount + 1;
}
public void withdraw(double amount){
super.withdraw(amount);
transactionCount = transactionCount + 1;
}
public void deductFees(){
if (transactionCount > 3){
double fee = 2.0*(transactionCount - 3);
super.withdraw(fee);
}
transactionCount = 0;
}
}
BankAccountTest.java
import java.util.*;
public class BankAccountTest
{
public static void main(String[] args)
{
Scanner myScanner = new Scanner(System.in);
System.out.print("Enter initial checking account balance: ");
double amount = Double.parseDouble(myScanner.nextLine());
CheckingAccount myChecking = new CheckingAccount(amount);
System.out.println("D - Deposit into checking");
System.out.println("W - Withdraw from checking");
System.out.println("P - End of month processing");
System.out.println("S - Show account balance");
System.out.println("E - Exit the program");
boolean done = false;
while (!done)
{
System.out.print("> ");
String choice = myScanner.nextLine();
if (choice.equalsIgnoreCase("D"))
{
System.out.print("Enter amount to deposit: ");
amount = Double.parseDouble(myScanner.nextLine());
myChecking.deposit(amount);
}
else if (choice.equalsIgnoreCase("W")) {
try {
System.out.print("Enter amount to withdraw: ");
amount = Double.parseDouble(myScanner.nextLine());
myChecking.withdraw(amount);
} catch (InsufficientFunds myEx) {
System.out.println(myEx.getMessage());
System.out.println("Transaction Aborted!");
}
}
else if (choice.equalsIgnoreCase("P"))
myChecking.deductFees();
else if (choice.equalsIgnoreCase("S"))
System.out.println("Checking balance: " + myChecking.getBalance());
else if (choice.equalsIgnoreCase("E"))
done = true;
else
System.out.println("Invalid menu choice - please re-enter");
}
System.out.println("Goodbye!");
}
}
No Comments