【问题标题】:need help with some basic java需要一些基本的java帮助
【发布时间】:2010-12-26 20:42:32
【问题描述】:

我正在做我的 Java 书的第一章练习,但我已经被一个问题困住了一段时间。我会打印问题,

提示/读取表示货币金额的双精度值。然后确定代表该金额所需的每张钞票和硬币的最少数量,从最高的开始(假设 10 美元钞票是所需的最大尺寸)。例如,如果输入的值是 47,63(四十七美元 63 美分),那么程序应该将等值的金额打印为:

  1. 四张十美元的钞票
  2. 1 张五美元的钞票
  3. 2 一美元的钞票
  4. 2 个季度
  5. 1 毛钱
  6. 0 镍
  7. 3 便士"

等等

我正在按照他们所说的那样做一个示例,以便获得一个想法,正如您将在代码中看到的那样。尽管如此,我还是设法打印了 4 美元,但我不知道如何获得 “1 5 美元”,只有 7 美元(见代码)。

请不要为我编写整个代码。我只是需要一些关于我所说的话的建议。谢谢。

import java.util.Scanner;

public class PP29 {
    public static void main (String[] args) {

        Scanner sc = new Scanner (System.in);

        int amount;
        double value;
        double test1;
        double quarter;

        System.out.println("Enter \"double\" value: ");
        value = sc.nextDouble();

        amount = (int) value / 10;      // 47,63 / 10 = 4. 
        int amount2 = (int) value % 10; // 47 - 40 = 7

        quarter = value * 100;          // 47,63 * 100 = 4736
        int sum = (int) quarter % 100;  // 4763 / 100 => 4763-4700 = 63.

        System.out.println(amount);
        System.out.println(amount2);
    }
}

【问题讨论】:

    标签: java math


    【解决方案1】:

    要得到 10 美元钞票除以 10 的结果。

    现在想想如何使用7 / 5 和7 % 5。

    我还建议您不要为此使用双精度数,因为表示错误会给您带来不正确的结果。最好以美分为单位执行此计算并仅使用整数算术。输入“47,63”可以视为 4763 美分,一张十美元的钞票是 1000 美分。

    【讨论】:

    • 好的,嗯。所以 7 / 5 应该给我一张 5 美元的钞票,而 7 % 5 应该给我剩下的 7 美元,因为我从中取出了 5 美元——即 2。对吗? :)
    【解决方案2】:

    首先,如果可能,您不应该使用浮点数进行计算。有很多棘手的细节。

    对于这个问题,最好将货币值读取为双精度值,然后尽快将其转换为美分。

    double monetaryValue = scanner.nextDouble();
    int cents = (int) (monetaryValue * 100.0 + 0.5);
    
    int remaining = cents;
    int tenDollars = remaining / 1000;
    remaining %= 1000;
    int fiveDollars = remaining / 500;
    // TODO: continue calculation with remaining ...
    

    我相信你会弄清楚如何继续。

    【讨论】:

    • 本书还没有解释while循环、数学类等。我将不得不坚持第 1 章中的内容:)
    • 是的,我注意到并修复了代码。现在它更简单、更快、更容易理解。好吧,除了数学课。我希望这本书告诉你不要做浮点运算,因为要正确地做到这一点非常具有挑战性。
    • 这只是Math.round(...)的另一种写法。
    猜你喜欢
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2010-10-23
    • 2019-05-12
    • 1970-01-01
    • 2011-02-24
    相关资源
    最近更新 更多