【问题标题】:Calculating a parking fine using double使用双倍计算停车罚款
【发布时间】:2021-12-20 17:15:33
【问题描述】:

我正在做一个学习练习,想知道我是否可以得到一些指导,结果却不如预期。

我们需要计算延迟付款的罚款。参数是停车罚款的价格和迟到的天数。罚款应按罚款价格的 10% 计算,每天逾期。该方法应该以双精度值返回罚款。

虽然代码已被接受,但在我运行的示例中并没有输出正确的答案,同时调用该方法。我认为我没有正确声明双精度?

感谢您提供的任何帮助。

public class Fines
{
    // instance variables
    private ArrayList<Tickets> fines;
    private String test; 

    /**
     * Create a database
     */
    public Database(String aDatabase)
    {
       books = new ArrayList<>();
       name = aDatabase;
    }
    /**
     * Calculate fine for a late paid ticket
     */
    public double CalculateFine(int finePrice, int daysLate)
    {
        int amountToCharge;
        int percentAmount;
        percentAmount = 10*finePrice/100;
        amountToCharge = percentAmount*daysLate;
        return amountToCharge;
    }
}

【问题讨论】:

  • 确实,如果您打算将这些变量设为doubles,那么它们目前都定义为ints,这将导致舍入错误。您需要将percentAmountamountToCharge 定义为double 而不是int
  • Doh - 我现在觉得自己很愚蠢!谢谢
  • 认识到您的代码太深而无法识别问题是朝着纠正问题迈出的一大步。这就是橡胶闪避效果如此出色的原因 - rubberduk.com.
  • @spork 请考虑将您的评论转换为答案,以便 OP 可以接受它作为答案。这将“关闭”问题并帮助其他人轻松理解类似问题的可能解决方案;)谢谢!
  • @JoãoDias 抱歉,直到 2 个月后才看到您的消息。我现在就转换我的评论。

标签: java integer double calculation


【解决方案1】:

如果您打算将这些变量设为doubles,则它们目前都定义为ints,这将导致舍入错误。您需要将percentAmountamountToCharge 定义为double 而不是int

这是一个很好的例子,它知道问题的答案,但由于代码太深而无法识别它。停止一切并从第 1 步开始向自己解释问题通常很有帮助,就好像你在和一个白痴说话一样。

【讨论】:

  • “停止一切,向自己解释问题”明智的话。 Rubberduck debugging 应该更频繁地使用。
  • @EricAya 我创建了rubberduk.com,所以我可以在任何地方使用鸭子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多