我正在从书本上学习java,我遇到了一个逻辑问题,我知道代码没有那么有效,但我想理解这个问题,这样我就可以更好地理解Java是如何工作的并避免 future 更复杂的问题。
我正在尝试编写的程序应该读取帐户余额和利率,然后在一年和两年后给出余额。
第二年的利率应根据第一年的总额计算。
但我的计划只是从第一年到第二年添加相同数量的利息。因此,在余额为 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,然后乘以利率。 然后将利率添加到余额中 然后我再次添加利率,这应该给出不同的利率,因为此时余额的值已发生变化,但事实并非如此,它只是计算读入的数字而不是更新的余额的利息.
这是为什么?
我认为到程序结束时,余额的值应该是更新后的值,因此年利息变量应该起作用......,但显然我弄错了。
最佳答案
如果你写这样的声明
double yearsInterest = (balance / 100) * interest;
你没有定义兴趣在数学意义上的含义。您实际上要做的是使用 balance
和 interest
当前引用的值来计算利息。如果您想定义它,只需添加一个方法
private double calculateInterest(double balance, double interest) {
return (balance / 100) * interest;
}
像这样使用它
balance += calculateInterest(balance, interest);
println("The balance after a year would be £" + balance +".");
balance += calculateInterest(balance, interest);
println("The balance after two years would be £" + balance +".");
关于java - Java 新手逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20452868/