java - 硬币数学转换问题

标签 java eclipse class math

我目前正在编写一个程序,它将把便士转换成正确数量的二十、十、五、美元、25美分、10美分、5美分和1美分。我已经正确地得到了程序的第一部分,但是一旦我得到美元,我的数学就不会输出正确的金额。有什么帮助吗?

import java.util.Scanner;

public class assignment1 {

public static void main(String[] args) {
    Scanner inputReader = new Scanner(System.in);

    int num, remainder;

    System.out.print("Enter a value as a number of pennies: ");
    num = inputReader.nextInt();

    remainder = num % 2000;

    System.out.println(num + " pennies is equal to:");
    System.out.println((num / 2000) + " twenties");
    System.out.println((remainder / 1000) + " tens");
    System.out.println(((remainder % 1000) / 500) + " fives");
    System.out.println((((remainder % 1000) % 500) / 100) + " dollars");
    System.out.println(((((remainder % 1000) % 500) % 100) / 25) + " quarters");
    System.out.println(((((remainder % 1000) % 500) % 100) % 25) / 10 + " dimes");
    System.out.println((((((remainder % 1000) % 500) % 100) % 25) % 10) / 5 + " nickels");
    System.out.println(((((((remainder % 1000) % 500) % 100) % 25) % 10) % 5) / 1 + " pennies");

}
}

最佳答案

好的。我看到你做了什么。让我们从

开始
System.out.println((num / 2000) + "twenties");
System.out.println((remainder / 1000) + "tens");
System.out.println((remainder / 1000) % 500 + "fives");
System.out.println((((remainder / 1000) % 500) % 100) + "dollars");

第一行是正确的。但您不能使用简单的余数来保持运行计数。另外,numremainder 都是糟糕的变量名。您可以对运行计数执行类似的操作,

System.out.print("Enter a value as a number of pennies: ");
int pennies = inputReader.nextInt();
System.out.println(pennies + " pennies is equal to:");
int twenties = pennies / 2000;
pennies -= twenties * 2000;
int tens = pennies / 1000;
pennies -= tens * 1000;
int fives = pennies / 500;
pennies -= fives * 500;
int dollars = pennies / 100;
pennies -= dollars * 100;
int quarters = pennies / 25;
pennies -= quarters * 25;
int dimes = pennies / 10;
pennies -= dimes * 10;
int nickels = pennies / 5;
pennies -= nickels * 5;
System.out.printf("%d twenties, %d tens, %d fives, %d dollars, "
        + "%d quarters, %d dimes, %d nickels, %d pennies%n", twenties,
        tens, fives, dollars, quarters, dimes, nickels, pennies);

这将输出(以 5869 作为输入),

5869 pennies is equal to:
2 twenties, 1 tens, 1 fives, 3 dollars, 2 quarters, 1 dimes, 1 nickels, 4 pennies

或者(如果您想要非运行计数),只需从便士中删除减法即可,例如

System.out.println(pennies + " pennies is equal to:");
int twenties = pennies / 2000;
int tens = pennies / 1000;
int fives = pennies / 500;
int dollars = pennies / 100;
int quarters = pennies / 25;
int dimes = pennies / 10;
int nickels = pennies / 5;
System.out.printf("%d twenties, %d tens, %d fives, %d dollars, "
        + "%d quarters, %d dimes, %d nickels, %d pennies%n", twenties,
        tens, fives, dollars, quarters, dimes, nickels, pennies);

只需 5869 即可获得

5869 pennies is equal to:
2 twenties, 5 tens, 11 fives, 58 dollars, 234 quarters, 586 dimes, 1173 nickels, 5869 pennies

关于java - 硬币数学转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25539598/

相关文章:

java - 来自公共(public)字符串的 Android RSA 加密

java.sql.SQLException : Could not commit with auto-commit set on at oracle. jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:4443)

c - 如何在 MAC 中为 C/C++ 设置 Eclipse

Javascript es6类处理错误

cocoa - 自定义 NSControl 目标/操作指南!

java - 使用jsf连接数据库

Java - 在目录中搜索文件

java - Eclipse下创建可执行Jar文件

java - Eclipse:SourceType 到 Class(或获取该类的当前参数)

c++ - 在类中初始化 boost::multi_array