CS 1063, Fall 2005
Enhanced Purse class

The lectures for Week 9 had you do more work on the Purse class of the Week 8 lectures.

File: Purse.javaFile: PurseTest.java
public class Purse {

   // constants
   final double CENT_VALUE =    0.01;
   final double NICKEL_VALUE =  0.05;
   final double DIME_VALUE =    0.10;
   final double QUARTER_VALUE = 0.25;
   final double DOLLAR_VALUE =  1.00;
   final int PENNIES_PER_DOLLAR = 100;
   
   // private data members
   private int myCents;
   private int myNickels;
   private int myDimes;
   private int myQuarters;
   private int myDollars;
   
   // Constructs an empty purse
   public Purse(int cents, int nickels, 
         int dimes, int quarters, int dollars) {
      myCents = cents;
      myNickels = nickels;
      myDimes = dimes;
      myQuarters = quarters;
      myDollars = dollars;
   }
   
   // Constructs an empty purse
   public Purse() {
      this(0, 0, 0, 0, 0);
   }
   
   // addCents: Add cents to the purse
   // count: the number of cents to add
   public void addCents(int count) {
      myCents += count;
   }

   // addNickels: Add nickels to the purse
   // count: the number of nickels to add
   public void addNickels(int count) {
      myNickels += count;
   
   }

   // addDimes: Add dimes to the purse
   // count: the number of dimes to add
   public void addDimes(int count) {
      myDimes += count;
   
   }

   // addQuarters: Add quarters to purse
   // count: the number of quarters to add
   public void addQuarters(int count) {
      myQuarters += count;
   
   }

   // addDollars: Add quarters to purse
   // count: the number of dollars to add
   public void addDollars(int count) {
      myDollars += count;
   
   }

   // calculate the total value in purse
   // return the sum of all coin values
   public double calculateTotal() {
      return CENT_VALUE * myCents +
             NICKEL_VALUE * myNickels +
             DIME_VALUE * myDimes +
             QUARTER_VALUE * myQuarters +
             DOLLAR_VALUE * myDollars;   
   }
   
   private int toPennies() {
      return (int)((calculateTotal() + 
         0.000000001)*PENNIES_PER_DOLLAR);
   }
   
   public int getNumDollars() {
      return toPennies()/PENNIES_PER_DOLLAR;
   }
   
   public int getNumCents() {
      return toPennies()%PENNIES_PER_DOLLAR;
   }
   
   public String toString() {
      return "Purse: \n" +
       "   " + myCents + " Cents = " + 
         (myCents * CENT_VALUE) + "\n" +
       "   " + myNickels + " Nickels = " + 
         (myNickels * NICKEL_VALUE) + "\n" +
       "   " + myDimes + " Dimes = " + 
         (myDimes * DIME_VALUE) + "\n" +
       "   " + myQuarters + " Quarters = " + 
         (myQuarters * QUARTER_VALUE) + "\n" +
       "   " + myDollars + " Dollars = " + 
         (myDollars * DOLLAR_VALUE) + "\n";
   }
}
public class PurseTest {

   public static void main(String[] args) {
      Purse aPurse = new Purse(7, 3, 5, 2, 1);
      aPurse.addCents(7);
      aPurse.addNickels(3);
      aPurse.addDimes(5);
      aPurse.addQuarters(2);
      aPurse.addDollars(1);
      double totalValue = aPurse.calculateTotal();
      System.out.println("aPurse, total value: " +
         totalValue);
      System.out.println(aPurse);
      System.out.println("aPurse, # cents:   " +
         aPurse.getNumCents());
      System.out.println("aPurse, # dollars: " +
         aPurse.getNumDollars());
         
      Purse bPurse = new Purse();
      bPurse.addCents(14);
      bPurse.addNickels(31);
      bPurse.addDimes(7);
      bPurse.addQuarters(5);
      totalValue = bPurse.calculateTotal();
      System.out.println("bPurse, total value: " +
         totalValue);
      System.out.println(bPurse);
      System.out.println("bPurse, # cents:   " +
         bPurse.getNumCents());
      System.out.println("bPurse, # dollars: " +
         bPurse.getNumDollars());
   }
}


Output of a run:

aPurse, total value: 4.4399999999999995
Purse: 
   14 Cents = 0.14
   6 Nickels = 0.30000000000000004
   10 Dimes = 1.0
   4 Quarters = 1.0
   2 Dollars = 2.0

aPurse, # cents:   44
aPurse, # dollars: 4
bPurse, total value: 3.64
Purse: 
   14 Cents = 0.14
   31 Nickels = 1.55
   7 Dimes = 0.7000000000000001
   5 Quarters = 1.25
   0 Dollars = 0.0

bPurse, # cents:   64
bPurse, # dollars: 3