-2

我的函数 ReturnChange 应该接受零钱,硬币数组 (int Coins[] = {100, 50, 20, 10, 5};) ps 它们以美分为单位,而 numCoins 数组 (int NumCoins[] = {10, 10 , 10, 10, 10};) 并计算变化。找零应该是硬币。如果硬币完成,即 num 个硬币,则必须使用替代硬币。

private static int ReturnChange(double change, int[] Coins, int[] numCoins) {

    int i = 0;
    int totalcoins = 0;
    change = change * 100;
    do {

        totalcoins++;
        change -= 100;

    } while (change >= 100);
    System.out.println("1 dollar x " + totalcoins + "");
    i++;
    int coinsfifty = 0;
    do {
        coinsfifty++;
        change -= 50;

    } while (change >= 50);
    System.out.println("50 cents x " + coinsfifty + "");
    i++;
    int coinstwenty = 0;
    do {
        coinstwenty++;
        change -= 20;

    } while (change >= 20);
    System.out.println("20 cent x " + coinstwenty + "");
    i++;
    int coinsten = 0;
    do {
        coinsten++;
        change -= 10;

    } while (change >= 10);
    System.out.println("10 cent x " + coinsten + "");
    i++;
    int coinsfive = 0;
    do {

        coinsfive++;
        change -= 5;
    } while (change >= 5);
    System.out.println("5 cent x " + coinsfive + "");
    return 0;

}

当 4 作为更改传递时的输出是:

1 美元 x 4
50 美分 x 1
20 美分 x 1
10 美分 x 1
5 美分 x 1

以 2.5 为例时的输出变化:

1 美元 x 2
50 美分 x 1
20 美分 x 1
10 美分 x 1
5 美分 x 1

问题:需要其他,例如 50 美分等在输出 1 中显示零,并在输出 2 中显示 0 表示 20 美分以上,而不是一。

4

1 回答 1

0

好吧,你不应该使用do-while。
这在逻辑上是错误的,因为“do”中的代码总是至少运行一次。

只需将您的 do-whiles 替换为 while,例如:

do {
    totalcoins++;
    change -= 100;
} while (change >= 100);

while(change >= 100) {
    totalcoins++;
    change -= 100;
}
于 2013-08-17T07:28:31.393 回答