Java 为什么赢了';实例变量不会改变吗? 类交换机{ 私人int rs5、rs2、rs1; 公共货币(整数金额){ 返回值(5)-0:rs5 qt; qt=(金额%5)/2; rs2=(qt>rs2)?qt-rs2:RS2QT; qt=((金额%5)/2)/1; rs1=(qt>rs1)?qt-rs1:RS1QT; out.printf(“5卢比硬币:%d,2卢比硬币:%d,1卢比硬币:” +%d\n、rs5、rs2、rs1); } }
这是投币机。它要求用户输入三个整数和要分配的硬币数量 这里我输入了Java 为什么赢了';实例变量不会改变吗? 类交换机{ 私人int rs5、rs2、rs1; 公共货币(整数金额){ 返回值(5)-0:rs5 qt; qt=(金额%5)/2; rs2=(qt>rs2)?qt-rs2:RS2QT; qt=((金额%5)/2)/1; rs1=(qt>rs1)?qt-rs1:RS1QT; out.printf(“5卢比硬币:%d,2卢比硬币:%d,1卢比硬币:” +%d\n、rs5、rs2、rs1); } },java,logic,class-variables,Java,Logic,Class Variables,这是投币机。它要求用户输入三个整数和要分配的硬币数量 这里我输入了rs5=10,rs2=10,rs1=10和amount=56。分配硬币数量后,应该有rs5=0、rs2=7、和rs1=10。但是上面的代码没有显示正确的答案。它所显示的是正确的rs5=0,其他的是10。那么这段代码有什么问题吗?您正在使用: class CoinExchanger { private int rs5, rs2, rs1; public boolean canDispenseCoins(int a
rs5=10
,rs2=10
,rs1=10
和amount=56
。分配硬币数量后,应该有rs5=0
、rs2=7
、和rs1=10
。但是上面的代码没有显示正确的答案。它所显示的是正确的rs5=0
,其他的是10
。那么这段代码有什么问题吗?您正在使用:
class CoinExchanger {
private int rs5, rs2, rs1;
public boolean canDispenseCoins(int amount){
return (amount<( rs5*5 + rs2*2 + rs1))? true: false;
}
public void dispenseCoins(int amount){
int qt = amount/5;
rs5 = (qt>rs5)?0: rs5-qt ;
qt = (amount%5) / 2;
rs2 = (qt>rs2)?qt-rs2: rs2-qt ;
qt = ((amount%5) / 2)/1;
rs1 = (qt>rs1)?qt-rs1: rs1-qt ;
out.printf("5Rs coins : %d, 2Rs coins : %d, 1Rs coins : "
+ "%d\n", rs5, rs2, rs1);
}
}
而不是:
qt = ((amount%5) / 2)/1;
这样,您将得到以下结果:
5卢比硬币:0,2卢比硬币:10,1卢比硬币:9
(5*10)+(1*1)=56
另一件事,您可以同样轻松地使用函数dispenseCoins,并在硬币数量足够时返回布尔值表示Dispenseable&&匹配整个数量。那么您采取了哪些诊断步骤来解决此问题?您是否已在调试器中逐步完成它,在每一步都观察到
qt
?56%5的值是多少?(56%5)/2的值是多少?我想用每个整数的剩余部分来检查56枚硬币是否都被分配了。。。
qt = ((amount%5) % 2)/1;