java - 仅更改机器计数区

标签 java if-statement logic currency

我在为 Java 类构建的更改机器时遇到问题。我对编程很陌生,所以这可能是一个愚蠢的逻辑错误。我的找零机要求用户输入商品的价格,然后输入支付的金额,然后它应该计算用户将收到多少硬币、一毛钱等......但是,它每次只计算 1 个硬币。代码如下:

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

public class Main {

    public static void main(String[] args) 
    {
    float penny = .1F, nickel = .5F, dime = .10F, quarter = .25F;
    int pennyCtr = 0, nickelCtr = 0, dimeCtr = 0, quarterCtr = 0;

    Scanner scan = new Scanner(System.in);

    System.out.println("Enter Purchase Price: ");
    float price = scan.nextFloat();
    DecimalFormat paidFormat = new DecimalFormat("0.00");

    System.out.println("Enter Amount Paid: ");
    float paid = scan.nextFloat();

    float change = (float) (paid - price);

    System.out.println("Your change from $" + paidFormat.format(paid) 
            + " is: " + change);

    if (change >= .25)
    {
        change -= quarter;
        quarterCtr++;
    }
    else if (change < .25)
    {
        change -= dime;
    dimeCtr++;
    }
    else if (change < .10)
    {
    change -= nickel;
    nickelCtr++;
    }
    else if (change < .5)
    {
        change -= penny;
        pennyCtr++;
    }

    System.out.println("Your change from $" + paidFormat.format(paid) +
            " is: " + quarterCtr + " Quarters, " + dimeCtr + " Dimes, "
            + nickelCtr + " Nickles, " + pennyCtr + " Pennies. ");

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

最佳答案

一些一般提示:

  1. 看看您如何声明变量,尤其是 penny 和 Nick。
  2. 看看您如何计算变化。是这样吗?
  3. 您需要一个 while 循环。应该循环多长时间?循环什么时候结束?
  4. 当您打印“您的零钱来自...”时,请考虑如何整齐地输出零钱。
  5. Google 一些关于浮点减法的问题 - 它并不像乍看起来那么简单!考虑使用 double 代替您的声明和输入。

关于java - 仅更改机器计数区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18366578/

相关文章:

c - 输出是什么? C语言编程

java - 使用 JMockit 模拟静态类字段

java - 如何对自身进行递归回溯?

java - 短路与多个 if's

java - 否则没有 if

prolog - 在 Prolog 中递归后返回一个值

c# - 如何为搜索查询创建解析器

java - Wiremock 对同一请求的不同响应

java - 我们可以安全地将 `tomcat.addTldSkipPatterns("*.jar")` 用于使用嵌入式 tomcat 的纯后端 spring 引导服务吗

谁能弄清楚为什么我的循环不能正常工作