将钱转换成所有可能的组合

时间:2018-11-09 17:33:55

标签: java

我知道我的问题重复了,但我仍然不明白其他答案在解释什么。下面是我的代码,我已经计算出它可以到达第一行57 pennies + 0 dimes + 0 nickels + 0 quarters,并且我正在考虑运行一个循环,该循环将列出所有可能的便士,角钱,镍币,四分之一币的组合。但是,我不知道如何。

public class Conversion{
 public static void main(String[] args) {
  int cents = 57;

  int quarter = 25;
  int dime = 10;
  int nickel = 5;
  int penny = 1;


  int totalPennies = cents / penny;
  cents %= penny;
  int totalNickels = cents / nickel;
  cents %= nickel;
  int totalDimes = cents / dime;
  cents %= dime;
  int totalQuarters = cents / quarter;
  cents %= quarter;


  System.out.print(totalPennies + " pennies + ");
  System.out.print(totalNickels + " nickels + ");
  System.out.print(totalDimes + " dimes + ");
  System.out.println(totalQuarters + " quarters");

 }
}

1 个答案:

答案 0 :(得分:4)

您的操作顺序是向后的。

首先要做的是计算您拥有多少便士。由于一分钱的字面价值为1,因此您可以有57分钱,并可以得到$ 0.57的罚款。显然这不是您想要完成的。

您要做的是从您的最高面额开始计数,然后倒退。这是一个示例。

// This should be the first operation
int totalQuarters = cents / quarter;
cents %= quarter;

我将其余部分作为练习留给读者练习,但是一旦成功重新排序,输出就变得正确了。

2 pennies + 1 nickels + 0 dimes + 2 quarters