Java 更改硬币数量
我试图获得满足规定的兑换量(1-99)所需的最小硬币数量(25美分、10美分、5美分和1美分)。例如:Java 更改硬币数量,java,Java,我试图获得满足规定的兑换量(1-99)所需的最小硬币数量(25美分、10美分、5美分和1美分)。例如: Change: 93 Quarters: 3 Dimes: 1 Nickels: 1 Pennies: 3 当我运行我的程序时,我没有得到我应该得到的答案。我的问题是如何使程序中的输出看起来像上面的解决方案?我是否在程序中更改方程式以获得我想要的数字?我对该计划唯一有权的部分是达到规定金额所需的季度数量。该计划还需要为1到99之间的任何规定金额工作 以下是我目前掌握的情况: pack
Change: 93
Quarters: 3
Dimes: 1
Nickels: 1
Pennies: 3
当我运行我的程序时,我没有得到我应该得到的答案。我的问题是如何使程序中的输出看起来像上面的解决方案?我是否在程序中更改方程式以获得我想要的数字?我对该计划唯一有权的部分是达到规定金额所需的季度数量。该计划还需要为1到99之间的任何规定金额工作
以下是我目前掌握的情况:
package mincoins;
import java.util.Scanner;
public class MinCoins2
{
public static void main(String[] args)
{
int change = 0;
int quarters = 0;
int dimes = 0;
int nickels = 0;
int pennies = 0;
try ( //creates a copy of Scanner class
Scanner in = new Scanner(System.in))
{
System.out.println("Please enter amount of change(1-99)");
change = in.nextInt();
//loop for quarters
while (change >= 25)
{
change = change - 25;
quarters = quarters + 1;
}
while (change >= 10)
{
change = change - 10;
dimes = dimes + 1;
}
while (change >= 5)
{
change = change - 5;
nickels = nickels + 1;
}
pennies = change;
System.out.println("Change: " + change);
System.out.println("Quarters = " + change);
System.out.println("Dimes = " + change);
System.out.println("Nickels = " + change);
System.out.println("Pennies = " + change);
}
}//end of main
}//end of class
您在最后4行有输入错误:
System.out.println("Change:" + change);
System.out.println("Quarters= "+ change);
System.out.println("Dimes=" + change);
System.out.println("Nickels=" + change);
System.out.println("Pennies=" + change);
是否正在打印change
此外,while循环条件应该是=
,而不是
最后,要在最后打印出更改,您必须复制它,因为您正在while循环中修改它
change = in.nextInt();
int changeOut = change;
...
System.out.println("Change:" + changeOut);
最后4行有打字错误:
System.out.println("Change:" + change);
System.out.println("Quarters= "+ change);
System.out.println("Dimes=" + change);
System.out.println("Nickels=" + change);
System.out.println("Pennies=" + change);
是否正在打印change
此外,while循环条件应该是=
,而不是
最后,要在最后打印出更改,您必须复制它,因为您正在while循环中修改它
change = in.nextInt();
int changeOut = change;
...
System.out.println("Change:" + changeOut);
主要问题是您使用的变量。您应该在适当的位置使用您的
四分之一
,一角
,五分镍币
,以及便士
变量
还有一个逻辑错误——你需要用尽所有剩余的零钱来计算你的硬币数。由于您的输出(您实际需要的输出)并不要求您计算剩余的更改(因为它应该是0),因此您可以完全避免另一个循环,只需将便士
直接分配给更改
:
pennies = change;
…这将为您提供剩余硬币总数的正确结果
作为一些常规清理,您还希望避免在print语句中赋值,因为它可能会有点混乱。使用诸如
change-=25
之类的语句来代替System.out.println
。主要问题是使用的变量。您应该在适当的位置使用您的四分之一
,一角
,五分镍币
,以及便士
变量
还有一个逻辑错误——你需要用尽所有剩余的零钱来计算你的硬币数。由于您的输出(您实际需要的输出)并不要求您计算剩余的更改(因为它应该是0),因此您可以完全避免另一个循环,只需将便士
直接分配给更改
:
pennies = change;
…这将为您提供剩余硬币总数的正确结果
作为一些常规清理,您还希望避免在print语句中赋值,因为它可能会有点混乱。使用独立于
系统.out.println
的语句,如change-=25
。显然,打字错误是个问题,需要:
System.out.println("Quarters = " + quarters);
System.out.println("Dimes = " + dimes);
System.out.println("Nickels = " + nickles);
System.out.println("Pennies = " + change);
但我想就这段代码如何在循环中工作提出一个建议,例如:
//loop for quarters
while (change > 25) {
change = change - 25;
quarters = quarters + 1;
}
无需循环即可轻松完成此操作:
quarters = change / 25;
change = change - quarters * 25;
这是因为change
和25
是int
s,所以/
将进行整数除法。它将给出最大数量的适合变化的四分之一,即四舍五入
再进一步,您还可以使用%模运算符在每个步骤中获得剩余的更改:
quarters = change / 25;
change = change % 25;
dimes = change / 10;
change = change % 10;
nickels = change / 5;
change = change % 5;
显然,打字错误是问题所在,需要:
System.out.println("Quarters = " + quarters);
System.out.println("Dimes = " + dimes);
System.out.println("Nickels = " + nickles);
System.out.println("Pennies = " + change);
但我想就这段代码如何在循环中工作提出一个建议,例如:
//loop for quarters
while (change > 25) {
change = change - 25;
quarters = quarters + 1;
}
无需循环即可轻松完成此操作:
quarters = change / 25;
change = change - quarters * 25;
这是因为change
和25
是int
s,所以/
将进行整数除法。它将给出最大数量的适合变化的四分之一,即四舍五入
再进一步,您还可以使用%模运算符在每个步骤中获得剩余的更改:
quarters = change / 25;
change = change % 25;
dimes = change / 10;
change = change % 10;
nickels = change / 5;
change = change % 5;
那么,我应该用什么来代替改变,使输出等于解呢<代码>四分之一,
一角
,五分镍币
,便士
。我已经更改了它,但仍然得到相同的结果:System.out.println(“Change=“+Change”);System.out.println(“Quarters=“+Quarters”);System.out.println(“Dimes=“+Dimes”);System.out.println(“镍币=”+镍币);System.out.println(“Pennies=“+Pennies”);仍然是相同的结果。@Lilyperson我重新创建了问题,并在我的PC和Ideone上修复了它,我不能再帮你了,因为我不知道问题出在哪里。您可能还有另一个问题,请尝试发布您得到的输出,并向您解释为什么它是错误的。那么,我应该用什么来代替更改,以使输出与解决方案相等?嗯<代码>四分之一,一角
,五分镍币
,便士
。我已经更改了它,但仍然得到相同的结果:System.out.println(“Change=“+Change”);System.out.println(“Quarters=“+Quarters”);System.out.println(“Dimes=“+Dimes”);System.out.println(“镍币=”+镍币);System.out.println(“Pennies=“+Pennies”);仍然是相同的结果。@Lilyperson我重新创建了问题,并在我的PC和Ideone上修复了它,我不能再帮你了,因为我不知道问题出在哪里。您可能还有另一个问题,请尝试发布您得到的输出,并解释为什么它不对您。您应该有0个更改。这不是一个数学问题,这是一个逻辑问题。在你的最后5行中,你总是打印change
,而不是quarters
,dimes
,nickels
和pennies
!不管我做什么,它都不能满足我的需求。为什么要在这个上面添加try
块?这在这里绝对没有必要