自动售货机中的硬币输出?

时间:2016-02-23 02:50:20

标签: java

我不确定我错在哪里。我无法按预期获得正确的输出。以下是我的计划:

public static void insertMoney(){
    double dollars, quarters, dimes, nickels, pennies;
   double paymentSum=0;
    System.out.println("Enter amount of money in cents.");
    Scanner input = new Scanner(System.in);
    paymentSum = input.nextDouble();
    //paymentSum = (paymentSum)/100;
       if (paymentSum <= 0){
        System.out.println("Please feed me more money, so I can feed you!. Try again next time :)");
        return; 
       }
    System.out.println("You entered: " +paymentSum+" Cent(s).");
    System.out.println((paymentSum/100) + " Cent(s) in coins can be given as: ");
   dollars = paymentSum /100;
   paymentSum = paymentSum%100;
    quarters = paymentSum/25;
    paymentSum = paymentSum % 25;
    dimes = paymentSum/10;
    paymentSum = paymentSum % 10;
    nickels = paymentSum/5;
    paymentSum = paymentSum % 5;
    pennies = paymentSum;
    System.out.println(dollars + " dollar(s)");
    System.out.println(quarters + " quarter(s)");
    System.out.println(dimes + " dime(s)");
    System.out.println(nickels + " nickel(s) and");
    System.out.println(pennies + " pennies");
}

我正试图获得输出:

You entered: 26.0 Cent(s).
0.26 Dollar(s) in coins can be given as: 
0.0 dollar(s)
1.0 quarter(s)
0.0 dime(s)
0.0 nickel(s) and
1.0 pennies

但我明白了:

You entered: 26.0 Cents(s).
0.26 Dollar(s) in coins can be given as: 
0.26 dollar(s)
1.04 quarter(s)
0.1 dime(s)
0.2 nickel(s) and
1.0 pennies

我的代码中出错了什么?任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:-1)

问题是你期望的整数除法但使用双paymentSum。 如this article中所述,由于paymentSum是双精度数,因此任何除法也会产生双精度。这就是为什么你的宿舍显示为1.04而不是1,以及为什么你的角钱是0.1而不是0等等......