Расчет продолжительности инвестиций в Java с использованием простой формулы процента

Таким образом, задача, которую я пытаюсь выполнить, состоит в том, чтобы найти количество лет, необходимое для того, чтобы директор достиг определенной стоимости. скажем, например, я начинаю с 5000 долларов и хочу накопить 15000 с 10% процентной ставкой в ​​год. Я хочу узнать, как долго продлится эта инвестиция

это то, что я сделал до сих пор

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 $15000.0 is 1.0 years
The Number of years it takes to accumulate $15000.0 is 2.0 years
The Number of years it takes to accumulate $15000.0 is 3.0 years
The Number of years it takes to accumulate $15000.0 is 4.0 years
The Number of years it takes to accumulate $15000.0 is 5.0 years
The Number of years it takes to accumulate $15000.0 is 6.0 years
The Number of years it takes to accumulate $15000.0 is 7.0 years
The Number of years it takes to accumulate $15000.0 is 8.0 years
The Number of years it takes to accumulate $15000.0 is 9.0 years
The Number of years it takes to accumulate $15000.0 is 10.0 years
The Number of years it takes to accumulate $15000.0 is 11.0 years
The Number of years it takes to accumulate $15000.0 is 12.0 years

как распечатать только последнюю строку?

3 ответа

Решение

Вам нужно использовать цикл (for или же while). В этом цикле вы можете увеличить год и вычислить новое значение.

Обратите внимание, что я сделал некоторые изменения в переменных:

  • Поскольку вы хотели целочисленный цикл, тип T является int
  • Я изменился EndValue а также FinalValue в endValue а также finalValue соответственно. Соглашения об именах Java - это camelCase с маленькой первой буквой для имен переменных.
  • Я думаю years это лучшее имя, чем T, но это мое личное мнение. Если вы решили остаться с Tпо крайней мере это должна быть маленькая буква t

Тогда вы можете использовать следующий код. Сохранение endValue в переменной не является обязательным, поскольку оно используется только один раз. Так что это может быть вписано. Но я решил остаться рядом с вашим вопросом.

    int years = 0;

    double endValue = investment;

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

Вы должны знать, что после этого цикла годы - это число полных лет, в которых endValue больше или равно futureValue. Это означает, что вы не можете получить что-то вроде 3,5 лет в результате. Если вы хотите рассчитать это, вы должны использовать решение Генри.

Самое простое решение - немного математики:

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

где goal а также startсумма в конце и в начале соответственно и rate процентная ставка в процентах.

Здесь много неправильного... Во-первых, ваше утверждение IF: оно не имеет действия, потому что вы закрыли его точкой с запятой. Кроме того, конечное значение вряд ли будет равняться будущему, отчасти из-за точности с плавающей запятой, а отчасти потому, что вряд ли будет целое число лет. Поэтому я бы попробовал что-то вроде:

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 напрямую.

Другие вопросы по тегам