java - 更改机器数学和逻辑错误

标签 java math double

我之前已经发布过这个程序一次,但意识到我通过添加循环之类的东西想得太多了。我已经将其配对了一些,但仍然遇到了问题。该程序应该是一个改变机器。用户输入价格后,程序应将其四舍五入到最接近的美元,然后输出将分配多少零钱以及硬币的数量。此时的输出是完全错误的。我对编程非常陌生,我很茫然。

package changemachine;

import java.util.Scanner;
import java.text.*;

public class Main 
{

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

    System.out.println("Enter Purchase Price: ");

    double price = scan.nextDouble();

    int newPrice = (int)(price*100);

    int paid = (int)(newPrice+1);

    int change = (int)(paid - newPrice);

    int quarters = (int)(change/25);
    int dimes = (int)((change%25)/10);
    int nickels = (int)((change%25%10)/5);
    int pennies = (int) (change%25%10%5);

    System.out.println("Dispensing: " + quarters + " Quarters,"
          + dimes + "Dimes," + nickels + "Nickels," 
          + pennies + "Pennies.");

    System.out.println("Program written by Ashley ");
 }
}

最佳答案

(一旦 newPriceint,您就可以停止转换每一行。)而不是将 % 链接在一起,它会更具可读性(并且不易出错)减去您找到的值:

change -= 25*quarters;
dimes = change / 10;
change -= 10*dimes;
nickels = change / 5;
change -= 5*nickels;
pennies = change;

关于java - 更改机器数学和逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18423626/

相关文章:

java - 从 Double ArrayList 更改为 Integer ArrayList

java - 网格: 6 x 7 Square Cells

java - 非阻塞回声服务器 - Java

java - 判断 putIfAbsent 是否修改了 ConcurrentHashMap 的正确方法是什么?

java - 使用 Runtime.getRuntime().exec() 启动的 Java 程序的输出

将 double 值转换为 C 中的字符数组

algorithm - 线性回归因子

swift - 一些数字疯狂

performance - 做 HTTP 基准测试后如何计算平均情况

c# - 在 C# 中使用数组和指针与 C DLL