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

标签 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 便士的字面值(value)为 1,因此您可以拥有 57 便士,赚到 0.57 美元就足够了。这显然不是您想要实现的目标。

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

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

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

2 pennies + 1 nickels + 0 dimes + 2 quarters

关于java - 将金钱转换成所有可能的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53230711/

相关文章:

java - 在 java 中将 hashmap<String,String[]> 的值写入为 csv 文件

javac在命令行上不输出unicode

java - 使用 Vert.x vertx-pg-client 从池中获取 PgConnection

java - Android 中的 Flandmark

java - rJava 未在 R 中加载

java - 你如何使用 java(不是 javamail)连接到你的电子邮件

java - 用 if 条件替换 try-catch block

java - 使用 Spring AMQP 发布的致谢

java - postgres id 生成和 hibernate 的问题

java - 当鼠标使用 Graphics2D 移动时,如何显示 X 和 Y 鼠标位置?