Android Java - 提取资金输出?

时间:2016-06-16 11:28:47

标签: 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--;
        else {
            cash.append(notes[i]).append(" ");
            money -= notes[i];
        }
    System.out.print(cash);
}

例如,如果 钱== 990 输出将是:500 200 200 50 20 20

我想弄清楚如何使用以下笔记来计算如何分配现金:500,200,100,50,20,10。

2 个答案:

答案 0 :(得分:2)

如果我的问题是正确的,那就是你想要的那条线:

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 

答案 1 :(得分:1)

基本上得到每个音符进入调整总数的次数的int计数。即,您调整总数以删除已放弃较大音符的任何值 使用模数,你得到的余数不能被该音符整除,并将该值作为调整值传递,以测试该面额中可以分配多少音符。

我已经给你算法了。

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

请注意,这是伪代码,您无法像这样命名变量,也不会像这样运行。

我应该添加最佳实践,最好使用常量作为面额的值,并在另一个答案中建议,因为这里没有明确说明,循环使用它们会很好。