Android Java-取款输出?
在我的Java程序中,我有一个方法:Android Java-取款输出?,java,android,Java,Android,在我的Java程序中,我有一个方法: private void giveMoney(int money) { int notes[] = {10, 20, 50, 100, 200, 500}; StringBuffer cash = new StringBuffer(); int i = notes.length - 1; while (i >= 0) if (notes[i] > money) i--;
private void giveMoney(int money) {
int notes[] = {10, 20, 50, 100, 200, 500};
StringBuffer cash = new StringBuffer();
int i = notes.length - 1;
while (i >= 0)
if (notes[i] > money)
i--;
else {
cash.append(notes[i]).append(" ");
money -= notes[i];
}
System.out.print(cash);
}
例如,如果
货币=990
输出将为:500 200 50 20
我想计算出如何使用以下票据计算现金的分配方式:500、200、100、50、20、10 基本上得到每个音符进入调整总数的整数计数。i、 e.您可以调整总数,以删除较大纸币的任何值。
使用模数,您可以得到不能被该纸币整除的余数,并将该值作为调整值传递,以测试该面额中可以分发多少纸币 我已经给了你算法
500_amounts = (int) amount/500
500_Leftover = amount % 500
200_amounts = (imt) 500_Leftover/200
200_Leftover = 500_Leftover % 200
100_amount = (int) 200_Leftover/100
100_Leftover = 200_Leftover % 100
// and so on
注意,这是伪代码,不能这样命名变量,也不能这样运行。
我要补充的是,为了获得最佳实践,最好对面额的值使用常量,正如另一个答案中所建议的,因为这里没有明确说明,最好循环使用这些值。如果我正确回答了您的问题,这就是您想要的行:
int amount = (int) Math.floor(money/banknotes[i]);
整个功能:
private void giveCash(int money) {
int banknotes[] = {10, 20, 50, 100, 200, 500};
StringBuffer cash = new StringBuffer();
int i = banknotes.length - 1;
while (i >= 0) {
if (banknotes[i] > money) {
i--;
} else {
int amount = (int) Math.floor(money/banknotes[i]);
cash.append(banknotes[i]).append("x").append(amount).append(" ");
money -= banknotes[i]*amount;
}
}
TextView tvCash = (TextView) findViewById(R.id.cash);
tvCash.setText(cash);
}
输出:
500x1 200x2 50x1 20x2
现金应使用所有纸币发放:500、200、100、50、20、10。