-4
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 = 10
,rs2 = 10
,rs1 = 10
和amount = 56
。分配一定数量的硬币后,应该有rs5 = 0
,rs2 = 7
和rs1 = 10
。但上面的代码没有显示正确的答案。它显示正确的是rs5 = 0
,其他的是10
。那么这个代码有什么问题?
那么您采取哪些诊断步骤来解决问题?你有没有在调试器中通过它,在每一步都观察'qt'? –
什么是56%5的价值? (56%5)/ 2的价值是多少? –
我想每个整数的其余部分检查是否所有56个硬币都被分配... – sai