java - Java 新手逻辑

标签 java logic

我正在从书本上学习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;

你没有定义兴趣在数学意义上的含义。您实际上要做的是使用 balanceinterest 当前引用的值来计算利息。如果您想定义它,只需添加一个方法

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/

相关文章:

java - 服务器返回 CORS header ,浏览器仍然抛出 Cross-Origin Request Blocked 错误

java - 如何按某些属性对对象列表进行排序

java - 依赖注入(inject)和容器类 (java-ee 7)

c - 我的归并排序 C 中的逻辑错误是什么

php - 逻辑编程帮助

C#统一if语句逻辑

java - 根据条件更改 ActionBar 中的图标

java - 日历 HOUR_OF_DAY 存在问题

java - Java 1.8 安装在 OS X El Capitan 上的什么位置?

python - 使用python进行数据提取及其求和