【问题标题】:Vending Machine Change Java自动售货机更改 Java
【发布时间】:2016-03-05 05:19:39
【问题描述】:

我对 Java 很陌生。我收到一个错误。我知道是什么原因导致它是double(changeLeft),但我需要得到双倍的结果,这样它才能显示出适当的变化,但我不知道该怎么做。

我不允许使用便士。最小的变化是四分之一。

我相信我要做的就是演员?但老实说,我很迷茫。

任何帮助/建议将不胜感激!

import java.util.Scanner;

public class Cash {


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

    int itemCost = 0;
    int moneyInserted = 0;
    int changeLeft = 0;
    int hundred = 0;
    int fifty = 0;
    int twenty = 0;
    int ten = 0;
    int five = 0;
    int toonie = 0;
    int loonie = 0;
    double quarter = 0;

    System.out.println("Item cost?");
    itemCost = scanner.nextInt();

    System.out.println("Amount given?");
    moneyInserted = scanner.nextInt();

    changeLeft = moneyInserted - itemCost;

    hundred = changeLeft / 100;
    changeLeft = changeLeft % 100;

    fifty = changeLeft / 50;
    changeLeft = changeLeft % 50;

    twenty = changeLeft / 20;
    changeLeft = changeLeft % 20;

    ten = changeLeft / 10;
    changeLeft = changeLeft % 10;

    five = changeLeft / 5;
    changeLeft = changeLeft % 5;

    toonie = changeLeft / 2;
    changeLeft = changeLeft % 2;

    loonie = changeLeft / 1;
    changeLeft = changeLeft % 1;

    quarter = (double)changeLeft; 


    System.out.println("Change Due($): \n" +
             hundred + " Hundred\n" + fifty + " Fifty\n" + twenty +
             " Twenty\n" + ten + " Ten\n" + five + " Five\n" + toonie +
             " Toonie\n" + loonie + " Loonie\n" +
             quarter + " Quarter");        
    }
}

【问题讨论】:

  • 什么是x / 1x / 1 的剩余部分是什么? (提示:数学)。
  • 如果你用钱工作,那么它应该是双倍的。如果你从那个双精度数中得到计数,那么它们可以是整数。 NB 整数除法与双精度或浮点除法有很大不同。
  • 如果您使用金钱,您可以接受双精度数作为用户输入,但双精度数必须立即转换为整数或长美分。浮点运算对于货币计算来说不够精确。

标签: java casting


【解决方案1】:

您可以将所有内容更新为双打。注意来自扫描仪的 Double.valueOf(String)。

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

double itemCost = 0;
double moneyInserted = 0;
double changeLeft = 0;
double hundred = 0;
double fifty = 0;
double twenty = 0;
double ten = 0;
double five = 0;
double toonie = 0;
double loonie = 0;
double quarter = 0;

System.out.println("Item cost?");
itemCost = Double.valueOf(scanner.next());

System.out.println("Amount given?");
moneyInserted = Double.valueOf(scanner.next());

changeLeft = moneyInserted - itemCost;

hundred = changeLeft / 100;
changeLeft = changeLeft % 100;

fifty = changeLeft / 50;
changeLeft = changeLeft % 50;

twenty = changeLeft / 20;
changeLeft = changeLeft % 20;

ten = changeLeft / 10;
changeLeft = changeLeft % 10;

five = changeLeft / 5;
changeLeft = changeLeft % 5;

toonie = changeLeft / 2;
changeLeft = changeLeft % 2;

loonie = changeLeft / 1;
changeLeft = changeLeft % 1;

quarter = (double)changeLeft; 


System.out.println("Change Due($): \n" +
         hundred + " Hundred\n" + fifty + " Fifty\n" + twenty +
         " Twenty\n" + ten + " Ten\n" + five + " Five\n" + toonie +
         " Toonie\n" + loonie + " Loonie\n" +
         quarter + " Quarter");


}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    相关资源
    最近更新 更多