Ошибка кода - сберегательный счет Java

1

Существует выходная ошибка, которая преобразует все мои балансы в 0,000000

Вот мой код:

package savingsaccountclass;

import java.util.Scanner;

public class SavingsAccountClass 
{
    public static void main(String[] args) 
    {
        double annualInterestRate;
        double savingsBalance;
        double[] postInterestBalance = new double[100];
        int counter = 0;

        Scanner entry = new Scanner(System.in);

        System.out.println("Enter the current annual interest rate");
        annualInterestRate = entry.nextDouble();

        System.out.println("Enter the current balance.");
        savingsBalance = entry.nextDouble();

        while (counter < 12)
        {
            postInterestBalance[counter] = calculateMonthlyInterest(savingsBalance, annualInterestRate);
            System.out.printf("After Month %d. %f\n", counter + 1, postInterestBalance[counter]);
            counter++;
        }
    }

    public static double calculateMonthlyInterest(double balance, double interest)
    {
        double[] array = new double[100];
        int c = 0;
        double done = (balance * (interest/12));
        while (c < 12)
        {
            array[c] = (((c + 1) * done) + balance);
            c++;
        }
        return array[c];
    }
}

И вот мой вывод:

run:
Enter the current annual interest rate
1
Enter the current balance.
100
After Month 1. 0.000000
After Month 2. 0.000000
After Month 3. 0.000000
After Month 4. 0.000000
After Month 5. 0.000000
After Month 6. 0.000000
After Month 7. 0.000000
After Month 8. 0.000000
After Month 9. 0.000000
After Month 10. 0.000000
After Month 11. 0.000000
After Month 12. 0.000000
BUILD SUCCESSFUL (total time: 1 second)

Если кто-то может сообщить мне, почему все превращено в 0, я бы очень признателен. Благодаря :)

  • 0
    Но когда он добавляет баланс, он все равно будет выше 0, верно?
  • 0
    @RomainHippeau Нет, интерес double .
Показать ещё 3 комментария
Теги:

1 ответ

3

Вы заполняете первые 12 балансов в массиве, но вы возвращаете array[12], который никогда не был назначен, поэтому он 0.

Вернуть array[c - 1] чтобы вернуть последний заполненный элемент массива.

Кроме того, ваша процентная ставка 1 интерпретируется как 100%, в том, что 100/12, или 8 1/3% добавляется каждый месяц. Разделите процентную ставку на 100 чтобы конвертировать из процента в десятичную.

Кроме того, вы не рассчитываете сложные проценты в настоящее время. Вы рассчитываете проценты в настоящее время для каждого "месяца" на начальном балансе 100. Вместо этого вам нужно будет рассчитать месячный процент, исходя из баланса предыдущего месяца, а не начального баланса, используя array[c - 1] для доступа к балансу предыдущего месяца.

  • 0
    Спасибо! Я сделал c = 0 как раз перед последним оператором возврата, и теперь он возвращает только первый месяц. Как я могу сделать так, чтобы он возвращал 1-й месяц, затем 2-й, затем 3-й ... и т. Д.? Спасибо за всю вашу помощь, хотя, я действительно ценю это!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню