为什么实例变量不会改变?

时间:2016-02-16 13:55:58

标签: java logic class-variables

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);

    }
}

这是硬币分配器。它要求用户输入三个整数和要分配的硬币数量......

我输入rs5 = 10rs2 = 10rs1 = 10amount = 56。在分配了数量的硬币后,应该有rs5 = 0rs2 = 7rs1 = 10。但上面的代码没有显示正确的答案。它显示的正确是rs5 = 0,其他的是10。那么这段代码有什么问题呢?

1 个答案:

答案 0 :(得分:0)

您正在使用:

qt = ((amount%5) / 2)/1;

而不是:

qt = ((amount%5) % 2)/1;

你得到的结果为:

5Rs硬币:0,2Rs硬币:10,1Rs硬币:9

(5 * 10)+(1 * 1)= 56

另一件事,你可以很容易地使用你的函数allocateseCoins并在硬币数量足够的情况下返回布尔值,并且可以使用&amp;&amp;匹配全部金额。