/* Reads two double values between 0 and 100 (inclusive) representing: 1. a purchase amount in dollars and cents 2. a payment by the user Produces an error message if either input value is out of range OR if the user's payment is less than the purchase amount. If the input is valid, program determines the amount of change that should be returned and prints the numbers of fifty-, twenty-, ten-, five-, and one-dollar bills as well as the numbers of quarters, dimes, nickels and pennies. Maximizes bills and coins with higher values. */ import java.io.*; public class P1_5A { public static void main (String args[]) { double price; // purchase amount of item double payment; // money paid by user double change; // change owed to user int dollarChange; // total change in bills int coinChange; // total change in coins int hundreds,fifties, twenties, tens, fives, ones; int q, d, n, p; // number of quarters, dimes, nickels, pennies // initialize Text object in to read from standard input. TokenReader in = new TokenReader(System.in); // prompt user to enter the purchase amount System.out.println("Enter the purchase amount in dollars and cents [eg. 25.92]"); System.out.print("Be sure to make it < 100.00: "); System.out.flush(); price = in.readDouble(); // print error message if purchase amount is out of range if((price<0)||(price>100)) System.out.println("That purchase amount is invalid."); else { // prompt user for payment System.out.println("\nEnter your payment in dollars and cents."); System.out.print("Remember, this store does not accept payments > 100 : "); System.out.flush(); payment = in.readDouble(); // print error message if payment amount is invalid if (payment > 100) System.out.println("We can't accept that much money."); else if ( payment < price) System.out.println("\nWe'll hold the item until you can pay for it."); else { // separately determine change required in bills and change in coins change = payment - price; dollarChange = (int) Math.floor(change); coinChange = (int) (Math.floor(change*100 + 0.5) - 100*Math.floor(change)); // calculate numbers of fifties, twenties, tens, fives, ones. fifties = dollarChange/50; twenties = (dollarChange%50)/20; tens = ((dollarChange%50)%20)/10; fives = (((dollarChange%50)%20)%10)/5; ones = ((((dollarChange%50)%20)%10)%5); // calculate numbers of quarters, dimes, nickels, pennies. q = coinChange/25; d = (coinChange%25)/10; n = ((coinChange%25)%10)/5; p = (((coinChange%25)%10)%5); // print numbers of each denomination. Exclude 0 values System.out.print("\nYour change of " + dollarChange + " dollar" + (dollarChange != 1 ? "s" : "") + " and " + coinChange + " cents is given as: "); System.out.print( fifties != 0 ? "\n" + fifties + " fift" + (fifties != 1 ? "ies" : "y") : ""); System.out.print(twenties != 0 ? "\n" + twenties + " twent" + (twenties != 1 ? "ies" : "y") : ""); System.out.print(tens != 0 ? "\n" + tens + " ten" + (tens != 1 ? "s" : "") : ""); System.out.print(ones != 0 ? "\n" + ones + " one" + (ones != 1 ? "s" : "") : ""); System.out.print(q != 0 ? "\n" + q + " quarter" + (q != 1 ? "s" : "") : ""); System.out.print(d != 0 ? "\n" + d + " dime" + (d != 1 ? "s" : "") : ""); System.out.print(n != 0 ? "\n" + n + " nickel" + (n != 1 ? "s" : "") : ""); System.out.print(p != 0 ? "\n" + p + " penn" + (p != 1 ? "ies.\n" : "y.\n") : ""); System.out.flush(); } } // wait for user to enter input to ensure console window remains visible in.waitUntilEnter(); } // end main } // end P1_5A /* Sample output: --------------------------------------------------------------------------- Enter the purchase amount in dollars and cents [eg. 25.92] Be sure to make it < 100.00: 25.92 Enter your payment in dollars and cents. Remember, this store does not accept payments > 100 : 50.00 Your change of 24 dollars and 8 cents is given as: 1 twenty 4 ones 1 nickel 3 pennies. */