【发布时间】: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,这将导致舍入错误。您需要将percentAmount和amountToCharge定义为double而不是int。 -
Doh - 我现在觉得自己很愚蠢!谢谢
-
认识到您的代码太深而无法识别问题是朝着纠正问题迈出的一大步。这就是橡胶闪避效果如此出色的原因 - rubberduk.com.
-
@spork 请考虑将您的评论转换为答案,以便 OP 可以接受它作为答案。这将“关闭”问题并帮助其他人轻松理解类似问题的可能解决方案;)谢谢!
-
@JoãoDias 抱歉,直到 2 个月后才看到您的消息。我现在就转换我的评论。
标签: java integer double calculation