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;