【发布时间】:2013-12-08 11:26:13
【问题描述】:
我正在从书本上学习 Java,但遇到了一个逻辑问题,我知道代码没有达到应有的效果,但我想了解问题,以便更好地了解 Java 的工作原理并避免未来更复杂的问题。
我正在尝试编写的程序应该读取帐户余额和利率,然后在一年和两年后给出余额。
第二年的利率应该从第一年的总和计算。
但我的程序只是将第一年的相同数量的利息添加到第二年。因此,如果余额为 6000,利息为 4.25,我将获得第一年的 6255.0 和第二年的 6510.0。我第二年应该得到 6520.83,因为第一年的利息也应该是计算利息。
import acm.program.*;
public class BalanceAndIntrest extends ConsoleProgram {
public void run() {
println("This program calculates intrest.");
double balance = readDouble("Enter your balance here: ");
double intrest = readDouble("Enter your intrest rate here: ");
double yearsIntrest = (balance / 100) * intrest;
balance += yearsIntrest;
println("The balance after a year would be £" + balance +".");
balance += yearsIntrest;
println("The balance after two years would be £" + balance +".");
我的逻辑是
它在余额中读取 它读起来很有趣 年利息的定义是将余额除以 100,然后乘以利率。 然后将利率添加到余额中 然后我再次添加利率,这应该给出不同的利率,因为此时余额的值已经改变,但它没有,它只是计算读取的数字的利息而不是更新的余额.
这是为什么?
我认为到程序结束时 balance 的值应该是更新后的值,所以 years interest var 应该起作用..,但显然我弄错了。
【问题讨论】:
-
如果您不是特别想避免使用 Java 标准库
Math函数,您也可以通过简单地执行balance *= Math.pow(interestRate, years)来计算利息(其中interestRate是年利率,对于例如,1.02代表 2% 的利息,years是您想要累积利息的年限)。