更改机器只计数宿舍

时间:2013-08-21 20:01:04

标签: 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 ");
    }
}

2 个答案:

答案 0 :(得分:1)

一些一般提示:

  1. 看看你如何宣布你的变量,特别是便士和镍。
  2. 看看你是如何计算变化的。是吗?
  3. 您需要一个while循环。它应该循环多久?循环什么时候结束?
  4. 当您打印出“您对...的更改”时,请考虑如何整齐地输出更改。
  5. 谷歌有关浮动减法的一些问题 - 它并不像它最初看起来那么容易!请考虑使用double代替您的声明和输入。

答案 1 :(得分:0)

快速查看代码告诉我,你错过了这段代码之间的循环:

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++;
}

基本上,你的程序会在它将变化减少到0之前终止。这就是你每次只计算1枚硬币的原因。考虑可能是一个while循环(虽然改变&gt; 0)。