# Cash Register Exercise

• February 19th, 2010, 10:52 PM
Consus
Cash Register Exercise
Sort of new to Java and was given this homework. Gettin some errors which at this given time I have no Idea on how to fix. Any suggestions on that and on the implementation of the methods themselves is appreciated.

Instructions:

http://img62.imageshack.us/img62/7525/instructionsy.gif

Errors: CashRegisterTester
CashRegisterTester

CashRegister cannot be resolved to a type
CashRegister cannot be resolved to a type

CashRegister.java done so far:

Code :

```/** * @author Javier * */ public class CashRegister{     /** * total value of purchase */ private double purchaseTotal=0.0; /** * cash given as payment for purchase */ private Cash payment = new Cash(); /** * total cash in cash register */ private Cash registerTotal = null;   /** * creates a cash register with 100 of every American currency */ public CashRegister(){ this(new Cash(100,100,100,100,100)); } /** creates a cash register with given amount of cash * @param registerTotal = given amount of cash for register */ public CashRegister(Cash registerTotal) { this.registerTotal = registerTotal;   }   /** adds the price of an item to a purchase price sum * @param amount * @return */   public double purchase (double amount){   purchaseTotal += amount;   return amount;   }   /** if the amount isnt 0 cash, it adds up the cash to * calculate payment given, * not sure if this is the right way for this * @param amount */   public void payment (Cash amount){ while(amount != new Cash()){ payment.add(amount); } }   /** if the value of the payment is more * than the purchase it calculates the change * not sure if this is the right way for this * * @return */ public Cash giveChange(){ Cash change = new Cash(); if(payment.getValue()>purchaseTotal){ change = payment.remove(purchaseTotal); }   purchaseTotal = 0; payment = null;   return change;   }   /** * @return */ public double getPurchaseTotal(){ return purchaseTotal; }   /** * @return */ public Cash getPayment(){ return payment;   }   /** * @return */   public Cash getRegisterTotal(){ return registerTotal;   } }```

CashRegisterTest:
Code :

```import static org.junit.Assert.assertTrue; import org.junit.Test;   /** * */   /** * @author juansuris * */   public class CashRegisterTester {   /** * Test method for {@link CashRegister#CashRegister(Cash)}. */ @Test public void testCashRegisterCash() { CashRegister cr = new CashRegister(new Cash(10, 10, 10, 10, 10)); assertTrue( Math.abs(cr.getPayment().getValue()) < 1e-8 && Math.abs(cr.getPurchaseTotal()) < 1e-8 && Math.abs(cr.getRegisterTotal().getValue() - 14.10) < 1e-8 ); }   /** * Test method for {@link CashRegister#CashRegister()}. */ @Test public void testCashRegister() { CashRegister cr = new CashRegister();   assertTrue( Math.abs(cr.getPayment().getValue()) < 1e-8 && Math.abs(cr.getPurchaseTotal()) < 1e-8 && Math.abs(cr.getRegisterTotal().getValue() - 141.0) < 1e-8 ); }   /** * Test method for {@link CashRegister#purchase(java.lang.String, double)}. */ @Test public void testPurchase() { CashRegister cr = new CashRegister();   cr.purchase(2.50); cr.purchase(2.75);   assertTrue( Math.abs(cr.getPayment().getValue()) < 1e-8 && Math.abs(cr.getPurchaseTotal() - 5.25) < 1e-8 && Math.abs(cr.getRegisterTotal().getValue() - 141.0) < 1e-8 ); }   /** * Test method for {@link CashRegister#payment(Cash)}. */ @Test public void testPayment() { CashRegister cr = new CashRegister();   cr.purchase(2.50); cr.purchase(2.75);   cr.payment(new Cash(4, 0, 0, 0, 0)); cr.payment(new Cash(0, 4, 9, 2, 0));   assertTrue( Math.abs(cr.getPayment().getValue() - 6.0) < 1e-8 && Math.abs(cr.getPurchaseTotal() - 5.25) < 1e-8 && Math.abs(cr.getRegisterTotal().getValue() - 141.0) < 1e-8 ); }   /** * Test method for {@link CashRegister#giveChange()}. */ @Test public void testGiveChange() { CashRegister cr = new CashRegister();   cr.purchase(2.50); cr.purchase(2.75);   cr.payment(new Cash(4, 0, 0, 0, 0)); cr.payment(new Cash(0, 4, 9, 2, 0));   Cash c = cr.giveChange(); Cash r = cr.getRegisterTotal();   assertTrue( Math.abs(cr.getPayment().getValue()) < 1e-8 && Math.abs(cr.getPurchaseTotal()) < 1e-8 && Math.abs(r.getValue() - 146.25) < 1e-8 && Math.abs(c.getValue() - 0.75) < 1e-8 ); }   }```

```/** * */   /** * @author Javier * */ public class Cash extends CashRegister{   // Static Fields   /** * value of one dollar bill */   public static final int ONE_BILL_VALUE = 100;   /** * value of a quarter */   public static final int QUARTER_VALUE = 25;   /** * value of a dime */   public static final int DIME_VALUE = 10;   /** * value of a nickel */   public static final int NICKEL_VALUE = 5;   /** * value of a penny */   public static final int PENNY_VALUE = 1;   // Instance Fields   /** * amount of bills */   private int bills = 0;   /** * amount of quarters */ private int quarters = 0;   /** * amount of dimes */   private int dimes = 0;   /** * amount of nickels */   private int nickels = 0;   /** * amount of pennies */   private int pennies = 0;   /** * value of cash collection */   private int value = 0;   /** * constructor for object without given the amount of currency */   public Cash() { }   /** constructor for object with given amount of currency * @param bills contained * @param quarters contained * @param dimes contained * @param nickels contained * @param pennies contained */   public Cash(int bills, int quarters, int dimes, int nickels, int pennies) { addBills(bills); addQuarters(quarters); addDimes(dimes); addNickels(nickels); addPennies(pennies); }   /**Adds bills to the collection * @param amount of bills * @return value of collection */   public double addBills(int amount){ if(amount>0){ bills +=amount; value +=amount * ONE_BILL_VALUE; } return value /100.0; }   /** Adds quarters to the collection * @param amount of quarters * @return value of collection */   public double addQuarters(int amount){ if(amount>0){ quarters +=amount; value +=amount * QUARTER_VALUE; } return value /100.0; }   /** Add dimes to the collection * @param amount of dimes * @return value of collection */   public double addDimes(int amount){ if(amount>0){ dimes +=amount; value +=amount * DIME_VALUE; } return value /100.0; }   /**Adds nickels to collection * @param amount of nickels * @return value of collection */   public double addNickels(int amount){ if(amount>0){ nickels +=amount; value +=amount * NICKEL_VALUE; } return value /100.0; }   /** Adds pennies to collection * @param amount of pennies * @return value of collection */   public double addPennies(int amount){ if(amount>0){ pennies +=amount; value +=amount * PENNY_VALUE; } return value /100.0; }   /** Removes bills from collection * @param amount of bills * @return amount of removed bills */   public int removeBills(int amount){ int removed = 0;   if (amount>0){ removed = Math.min(amount, bills); bills -= removed; value -= removed * ONE_BILL_VALUE; }   return removed; }   /** Removes quarters from collection * @param amount of quarters * @return amount of quarters removed */   public int removeQuarters(int amount){ int removed = 0;   if (amount>0){ removed = Math.min(amount, quarters); quarters -= removed; value -= removed * QUARTER_VALUE; }   return removed;   }   /**Removes dimes from collection * @param amount of dimes * @return amount of dimes removed */   public int removeDimes(int amount){ int removed = 0;   if (amount>0){ removed = Math.min(amount, dimes); dimes -= removed; value -= removed * DIME_VALUE; }   return removed; }   /** Removes nickels from collection * @param amount of nickels * @return amount of nickels removed */   public int removeNickels(int amount){ int removed = 0;   if (amount>0){ removed = Math.min(amount, nickels); nickels -= removed; value -= removed * NICKEL_VALUE; }   return removed; }   /** Removes pennies from collection * @param amount of pennies * @return amount of pennies removed */   public int removePennies(int amount){ int removed = 0;   if (amount>0){ removed = Math.min(amount, pennies); pennies -= removed; value -= removed * PENNY_VALUE; }   return removed; }   /** Removes cash from an existing cash collection * @param amount of cash to be retired * @return new amount of currency of collection */   public Cash remove(double amount){ Cash c = null;   int toRemove = 0; int amountInCents = (int)(amount * 100.0); if(amountInCents > 0 && amountInCents <= value){ c = new Cash();   toRemove = amountInCents / ONE_BILL_VALUE; c.addBills(removeBills(toRemove)); amountInCents -= c.getBills() * ONE_BILL_VALUE;   toRemove = amountInCents / QUARTER_VALUE; c.addQuarters(removeQuarters(toRemove)); amountInCents -= c.getQuarters() * QUARTER_VALUE;   toRemove = amountInCents / DIME_VALUE; c.addDimes(removeDimes(toRemove)); amountInCents -= c.getDimes() * DIME_VALUE;   toRemove = amountInCents / NICKEL_VALUE; c.addNickels(removeNickels(toRemove)); amountInCents -= c.getNickels() * NICKEL_VALUE;   toRemove = amountInCents / PENNY_VALUE; c.addPennies(removePennies(toRemove)); amountInCents -= c.getPennies() * PENNY_VALUE; } return c; }   /** Adds cash to an existing cash collection * @param c = cash to be added * @return new value of cash collection */   public double add(Cash c){ this.addBills(c.getBills()); this.addQuarters(c.getQuarters()); this.addDimes(c.getDimes()); this.addNickels(c.getNickels()); this.addPennies(c.getPennies());   return value/100.0; }   /** Gets amount of bills of the cash collection * @return the bills within cash collection */ public int getBills() { return bills; }   /** Gets amount of quarters of the cash collection * @return the quarters within cash collection */ public int getQuarters() { return quarters; }   /** Gets amount of dimes of the cash collection * @return the dimes within cash collection */ public int getDimes() { return dimes; }   /** Gets amount of nickels of the cash collection * @return the nickels within cash collection */ public int getNickels() { return nickels; }   /** Gets amount of pennies of the cash collection * @return the pennies within cash collection */ public int getPennies() { return pennies; }   /** Gets value of the cash collection * @return the value of the cash collection */ public double getValue() { return value/100.0; } }```