自动售货机更改计算器

时间:2018-03-08 18:52:22

标签: java loops java.util.scanner

我想将输入的整数分解为不同大小的硬币:四分之一(25),硬币(10),镍(5)和便士(1)。但我无法弄清楚如何处理镍币和便士。

例如,<title></title> <meta content='' name='keywords'/> <meta content='' name='description'/> <meta content='website' property='og:type'/> <meta add-site-url='' content='' property='og:url'/> 的输入应输出:

  

3个季度,1角钱,0个镍币,2个便士

但我明白了:

  

3季度,1毛钱,1镍,1便士。

我希望它检查它是否是有效条目,如果没有,我希望它告诉用户再次输入它,直到它获得有效条目。
其次,如果它给出了有效的条目,我希望它再次运行程序,但是一旦它给出了无效的条目,我希望程序要求用户输入有效的条目。
我设法完成了大部分工作,但我无法弄清楚如何让用户一遍又一遍地进入另一个条目。我的代码在第二次运行后就停止了 请帮忙。

以下是我的代码:

87

3 个答案:

答案 0 :(得分:0)

镍和便士的计算方式不同。试试这个

nickel = ((money%25)%10)/5;
penny = ((money%25)%10)%5;

答案 1 :(得分:0)

你的代码的逻辑是错误的,但你有正确的想法。

您的代码应该做的第一个问题是将其分解为硬币:

我可以融入多少季度&#34;金钱&#34;

quarter = money/25

这部分是正确的。

但是在计算出季度数后,你应该从总金额中减去它,然后转到下一个硬币。

我可以在多少钱中买到多少钱?

money = money - quarter*25
dimes = money/10

同样的逻辑适用于其他硬币:

money = money - dime*10
nickel = money/5

等等:

money = money - nickel*5
penny = money

这是解决此问题的简单而彻底的方法,可以简化。 所以,完整的代码:

public class VendingMachineChangeCalculator {

public static void main(String[] args) {    
    // TODO Auto-generated method stub    
Scanner takeit = new Scanner(System.in);
System.out.println("Enter a whole number from 1 to 99"
    + "\nI will find a combination of coins that equals"
    +"the amount of change ");
int money = 0;
System.out.println("Please enter number: ");
money = takeit.nextInt();
takeit.close();
System.out.println("You have: ");
int quarter, dime, nickel, penny;

quarter = money/25
money = money - quarter*25;
dime = money/10;
money = money - dime*10;
nickel = money/5;
money = money - nickel*5;
penny = money;

System.out.println(quarter + " quarters");
System.out.println(dime + " dimes");
System.out.println(nickel + " nickels");
System.out.println(penny + " pennies");


    }

}

答案 2 :(得分:0)

以下是如何获得正确数量的硬币

change = 87;

基本上你只需要计算你将获得多少硬币,不要忘记计算剩余的硬币。

quarters           = Math.floor(change / 25);
quarters_leftover  = change % 25;

dimes              = Math.floor(quarters_leftover / 10);
dimes_leftover     = quarters_leftover % 10;

nickels            = Math.floor(dimes_leftover / 5);
nickels_leftover   = dimes_leftover % 5;

penies   = Math.floor(nickels_leftover / 1);

对不起,解释不好,我的英语不够好,所以我无法解释你的详细信息。

<强>编辑:

如果您想重新录入,则需要将其置于循环中。因此,使用if,您需要将其更改为while,以便在满足条件时进行循环

while(money > 0 && money <= 99) {
    System.out.println("You have: ");

    int quarter, dime, nickel, penny;

    quarter = money/25;
    money = money %25;

    dime = money/10;
    money = money %10;

    nickel = money/5;
    money = money%5;
    penny = money;

    System.out.println(quarter + " quarters");
    System.out.println(dime + " dimes");
    System.out.println(nickel + " nickles");
    System.out.println(penny + " pennies");

    System.out.print("Good job, enter a new valid integer: ");
    money = takeit.nextInt();                       
}