RU beehive logo ITEC dept promo banner
ITEC 120
2009spring
ibarland
nokie
jmdymacek

homeinfolectslabsexamshws
textbooktutor/PIsjava.lang docsjava.util docs

lab06b
Ordering Donuts

The fancy bread shop, Oh Bonnie Pain, sells delicious Sugarbomb Donuts for 85 cents each. In order to seem european, they will list their prices using a comma as the decimal-separator: that is, “$4,50” rather than “$4.50”.

Your task: write a class DonutShop which has just one method, which gives a fancy-sounding message when somebody orders doughnuts.

class DonutShop {

  /** Respond to a donut order, at Oh Bonnie Pain.
   * @param numDonuts The number of donuts ordered.  Non-negative.
   * @return A sophisticated-sounding message reporting the total price.
   *         (see test cases).  
   */
  String donutOrderriere( int numDonuts ) {
    return "You'll replace this stub function.";
    }



  /** The price of one donut, *in pennies*. */
  private int centsPerDonut;

  /** Construct a donut shop which charges 85 cents for a donut: */
  public DonutShop() {
    this.centsPerDonut = 85;
    }


  }
(You can think of the cashier calling this method every time a customer places an order.) Here are a few test cases;
class DonutShopTester {
  public static void main( String[] args ) {
    DonutShop auBonP = new DonutShop();

    System.out.println( "Ordering 10 donuts; the cashier's reply is:");
    System.out.println( "Actual:   \"" + auBonP.placeOrderriere(10) + "\"" );
    System.out.println( "Expected: \"10 sucrebombe donuts will cost $8,50.  Merci!\"" );

    System.out.println( "Ordering 13 donuts; the cashier's reply is:");
    System.out.println( "Actual:   \"" + auBonP.placeOrderriere(13) + "\"" );
    System.out.println( "Expected: \"13 sucrebombe donuts will cost $11,05.  Merci!\"" );

    System.out.println( "Ordering 2 donuts; the cashier's reply is:");
    System.out.println( "Actual:   REPLACE THIS WITH A METHOD CALL" );
    System.out.println( "Expected: REPLACE THIS WITH EXPECTED ANSWER" );

    System.out.println( "Ordering 1 donut; the cashier's reply is:");
    System.out.println( "Actual:   REPLACE THIS WITH A METHOD CALL" );
    System.out.println( "Expected: REPLACE THIS WITH EXPECTED ANSWER" );
    }
  }


If you finish…

The above task really has two different parts: constructing the text-message, and converting a price into a fancy-euro-format. Modify your code by adding a second methods: priceInEuroFormat (which only deals with prices, and has nothing to do with donuts). Then modify your method donutOrderriere so that it calls priceInEuroFormat, passing in a price.

This version of the program behaves the same as before, but is better because it will let future users convert other (non-donut) prices into this format.

And if you finish that too:
Make a more general method priceInAnyFormat:

  System.out.println( "Expect \"$8.50\": \"" + priceInAnyFormat( 850, "$", "." ) + "\"" );
  System.out.println( "Expect \"USD8,50\": \"" + priceInAnyFormat( 850, "USD", "," ) + "\"" );
  System.out.println( "Expect \"£8x50\": \"" + priceInAnyFormat( 850, "£", "x" ) + "\"" );


Notes to instructor: Common problems:

homeinfolectslabsexamshws
textbooktutor/PIsjava.lang docsjava.util docs


©2009, Ian Barland, Radford University
Last modified 2009.May.06 (Wed)
Please mail any suggestions
(incl. typos, broken links)
to iba�rlandrad�ford.edu
Powered by PLT Scheme