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

在我的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--;
        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。