首页 > 解决方案 > 将货币转换成所有可能的组合

问题描述

我知道我的问题是重复的,但我仍然无法理解其他答案在解释什么。下面是我的代码,我计算它以到达第一行,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");

 }
}

标签: java

解决方案


您的操作顺序是倒退的。

你要做的第一件事就是计算你有多少便士。由于便士的实际价值为 1,因此您可以拥有 57 便士并弥补 0.57 美元。这显然不是你想要完成的。

你想做的就是从你的最高面额算起,然后倒着走。这是一个示例。

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

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

2 pennies + 1 nickels + 0 dimes + 2 quarters

推荐阅读