使用单利公式计算 Java 的投资期限

Calculating investment duration in Java using simple interest formula

所以我要做的任务是找出本金达到特定值所需的年数。比如说我从 5000 美元开始,我想以 10% 的利息累积 15000 美元 rate/year。我想知道这笔投资的期限是多长时间

这是我目前所做的

package com.company;

import java.util.Scanner;


public class InvestmentDuration {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.println ("Initial Investment: ");
    double investment = input.nextDouble();

    System.out.println ("Rate as decimals: ");
    double rate = input.nextDouble();

    System.out.println ("Future Value: ");
    double FutureValue = input.nextDouble();

    double T = 0; //Initialise Duration//

    double EndValue = investment * Math.pow ((1+rate), T); //Formula of Simple Interest//

     while (EndValue < FutureValue) {
        T += 1.0;

         if (investment * Math.pow((1 + rate), T) == FutureValue);

        System.out.println("The Number of years it takes to accumulate $" + FutureValue + " is " + T + " years");
    }


}

输出:

The Number of years it takes to accumulate 000.0 is 1.0 years
The Number of years it takes to accumulate 000.0 is 2.0 years
The Number of years it takes to accumulate 000.0 is 3.0 years
The Number of years it takes to accumulate 000.0 is 4.0 years
The Number of years it takes to accumulate 000.0 is 5.0 years
The Number of years it takes to accumulate 000.0 is 6.0 years
The Number of years it takes to accumulate 000.0 is 7.0 years
The Number of years it takes to accumulate 000.0 is 8.0 years
The Number of years it takes to accumulate 000.0 is 9.0 years
The Number of years it takes to accumulate 000.0 is 10.0 years
The Number of years it takes to accumulate 000.0 is 11.0 years
The Number of years it takes to accumulate 000.0 is 12.0 years

如何只打印最后一行?

这里有很多错误... 首先,您的 IF 语句:它没有任何操作,因为您用分号将其关闭。此外,endvalue 不太可能等于 futurevalu,部分原因是浮点精度,部分原因是不太可能是整数年数。 所以我会尝试类似的东西:

double T = 0.0;
while(investment * Math.pow ((1+rate), T) < FutureValue) {
   T += 1.0;
}
System.out.println ("The Number of years it takes to accumulate the Future Value is: " +T+);

当然,您也可以重新调整公式以直接计算 T。

最简单的解决方案是用一点数学知识:

Math.log(goal/start) / Math.log(1+rate/100.0)

其中 goalstart 分别是期末和期初的金额,rate 是以百分比表示的利率。

您需要使用循环(forwhile)。在此循环中,您可以递增年份并计算新值。

请注意,我对变量做了一些更改:

  • 因为你想要一个整数循环,所以 T 的类型是 int
  • 我把EndValueFinalValue分别改成了endValuefinalValue。 Java 命名约定是驼峰式命名,变量名首字母小写。
  • 我认为 yearsT 更好,但这是我个人的看法。如果你决定留在T,至少它应该是一个小写字母t

然后就可以使用下面的代码了。将 endValue 保存在变量中并不是真正必要的,因为它只使用一次。所以它可以内联。但我决定继续关注你的问题。

    int years = 0;

    double endValue = investment;

    while (endValue < futureValue) {
        years++;
        endValue = investment * Math.pow((1 + rate), years);
    }

你应该知道,在这个循环之后,years 是 endValue 大于或等于 futureValue 的整年数。这意味着你不能有 3.5 年这样的结果。如果你想计算那个,你应该使用亨利的解决方案。