Home Ask Login Register

Developers Planet

Your answer is one click away!

Ash February 2016

Round up to nickel, dime, quarters

Here is what I have to do:

Write a program that makes change for amounts less than one dollar. Input to the program must be a positive integer less than 100, representing an amount of money, in cents. Output must be the original amount of money together with a set of coins (quarters, dimes, nickels) that could make up the amount. The program must produce change containing the minimum number of coins required to produce the given amount. Should not include any pennies. For example, the input of 54 should produce results such as:

54 cents requires 2 quarters, 1 nickel

rather than

54 cents requires 2 quarters, 0 dimes, 1 nickels

The following is what i have done so far but doesn't round up if I enter 13,14,23,24,33,34,ect.

Any help would be much appreciated.

import java.util.Scanner;

public class MakeChangetest {

    public static String makeChange(int change) throws BadChangeException {
        int amount;
        String x = "";
        if (change > 0 && change < 100) {
            amount = (int) ((Math.round(change / 5)) * 5);
            if (amount == 0 || amount == 100) {
                x = "No change to be given.";
            }
            if (amount == 5) {
                x = change + " cents requires " + " 1 nickel ";
            } else if (amount == 10 || amount == 20) {
                x = change + " cents requires " + (amount / 10) + " dimes ";
            } else if (amount == 15) {
                x = change + " cents requires " + (amount / 10) + " dime, "
                        + " 1 nickel ";
            } else if (amount == 25 || amount == 50 || amount == 75) {
                x = change + " cents requires " + (amount / 25) + " quaters ";
            } else if (amount == 30 || amount == 55 || amount == 80) {
                x = change + " cents requires " + (amount / 25) + " quaters, "
                        + " 1 nickel";
            } else if (amoun        

Answers


pseudoDust February 2016

When you write change / 5 both change and 5 are integers, and so Java preforms integer division. Integer division rounds down, so for example:

(Math.round(14 / 5)) * 5 =>  (Math.round(2)) * 5 => 10

To solve this you need one of the operands to be a floating point number:

amount = (int) ((Math.round(change / 5.0)) * 5);

or

amount = (int) ((Math.round(change / 5.0f)) * 5);

or

amount = (int) ((Math.round((float)change / 5)) * 5);


seahorsepip February 2016

You got so many if statements, use a switch instead. I'll update this answer in a sec with a bit cleaned up code.

Here's some cleaned up code with the included fix from the other answer:

public class MakeChangetest {

    public static String makeChange(int change) throws BadChangeException {
        int amount;
        String x = "";
        if (0 <= change <= 100) {
            amount = (int) ((Math.round(change / 5.0)) * 5);
            switch(amount) {
                case 0:
                case 100:
                    x = "No change to be given.";
                    break;
                case 5:
                    x = change + " cents requires " + " 1 nickel ";
                    break;
                case 10:
                case 20:
                    x = change + " cents requires " + (amount / 10) + " dimes ";
                    break;
                case 15:
                    x = change + " cents requires " + (amount / 10) + " dime, " + " 1 nickel ";
                    break;
                case 25:
                case 50:
                case 75:
                    x = change + " cents requires " + (amount / 25) + " quaters ";
                    break;
                case 30:
                case 55:
                case 80:
                    x = change + " cents requires " + (amount / 25) + " quaters, " + " 1 nickel";
                    brea;
                case 35:
                case 60:
                case 70:
                case 45:
                case 85:
                case 95:
                    if (amount % 25 == 10) {
                        x = change + " cents requires " + (amount / 25) + " quater, " + "1 dime ";
                    } else {
                        x = change + "cents requires " + (amount / 25) + " quaters, " + " 2 dimes ";
                    }
                    break;
                case 40:
                case 65:
                case 90:
                    i 

Post Status

Asked in February 2016
Viewed 1,662 times
Voted 7
Answered 2 times

Search




Leave an answer


Quote of the day: live life

Devs Planet ®

2014-2016 www.devsplanet.com

Devs Planet © all rights reserved

Search