我想将输入的整数分解为不同大小的硬币:四分之一(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
答案 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();
}