-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