Java复利计算器,带年度贡献

huangapple go评论87阅读模式
英文:

Java Compound interest calculator with annual contribution

问题

        Scanner input1 = new Scanner(System.in);

        double amount;

        System.out.print("输入起始年份:");
        Scanner input2 = new Scanner(System.in);

        System.out.print("输入起始余额:");
        Double principal = input1.nextDouble();

        System.out.print("输入每年额外投入:");
        Double contribution = input1.nextDouble();

        System.out.print("输入年增长率:");
        Double rate = input1.nextDouble();
        Double rateDec = rate / 100;

        for (int year = 1; year <= 21; year++) {
            amount = (principal * Math.pow(1 + rateDec, year));
            Double addedamount = amount + contribution;
            System.out.println(year + "  " + String.format("%.2f", addedamount));

        }

输出应为:

    1  11,569.00
    2  13,290.04
    3  15,177.84
    4  17,248.57
    5  19,519.96
    6  22,011.44
    7  24,744.35
    8  27,742.08
    9  31,030.29
    10 34,637.12
    11 38,593.46
    12 42,933.17
    13 47,693.39
    14 52,914.88
    15 58,642.33
    16 64,924.77
    17 71,815.99
    18 79,374.95
    19 87,666.39
    20 96,761.26
    21 106,729.27
英文:

I'm trying to make a program that calculates annual compound interest plus an additional annual contribution. My output correctly calculates the new balance when I make contributions = 0 but get the output wrong when I change the contribution.

    Scanner input1 = new Scanner(System.in);

    double amount;
    
    System.out.print(&quot;Enter starting year: &quot;);
    Scanner input2 = new Scanner (System.in);
    
    System.out.print(&quot;Enter starting balance: &quot;);
    Double principal = input1.nextDouble();

    System.out.print(&quot;Enter additional annual contribution: &quot;);
    Double contribution = input1.nextDouble();

    System.out.print(&quot;Enter annual growth rate: &quot;);
    Double rate = input1.nextDouble();
    Double rateDec = rate / 100

    for(int year = 1; year &lt;= 21; year++){
        amount = (principal * Math.pow(1 + rateDec, year)) ;
        Double addedamount = amount + contribution;
        System.out.println(year + &quot;  &quot; + addedamount);

    }           

my output is this

Principle = 10000
rate = 9.69

Contribution = 600

1  11569.0
2  12631.8961
3  13797.78683209
4  15076.65237611952
5  16479.439991365503
6  18018.157726528818
7  19705.977210229463
8  21557.346401900697
9  23588.113268244873
10  25815.6614439378
11  28259.05903785537
12  30939.221858623558
13  33879.09245672418
14  37103.83651578075
15  40641.05827415991
16  44521.036820926
17  48776.98528887373
18  53445.3351633656
19  58566.04814069572
20  64182.95820552914
21  70344.14685564491

but should be

1  11,569.00 
2  13,290.04 
3  15,177.84 
4  17,248.57 
5  19,519.96 
6  22,011.44 
7  24,744.35 
8  27,742.08 
9  31,030.29 
10 34,637.12 
11 38,593.46 
12 42,933.17 
13 47,693.39 
14 52,914.88 
15 58,642.33 
16 64,924.77 
17 71,815.99 
18 79,374.95 
19 87,666.39 
20 96,761.26

答案1

得分: 1

我没有完全理解你的问题,但看起来你想要每年使用贡献计算复利。我假设贡献是每年在日期开始时进行的,从第一年开始。

另外,下次提问时,请查阅Stackoverflow提问指南,它能提供更好的可读性。

根据我的理解:

public static void main(String[] args) {
    
    double contribution = 600; //每年贡献
    double initialAmount = 10000; 
    double rateOfInterest = 9.69; //年利率9.69%
    double years = 10;

    double rateFactor = 1 + rateOfInterest/100; //利率因子 = 1.0969,如果利率为10%

    //最终计算,假设贡献在第一天开始的年份进行,包括第一年
    double finalAmount = initialAmount;
    for(int year=0; year<years; year++){
        System.out.println(year+" "+finalAmount+" "+contribution);

        finalAmount = finalAmount*rateFactor;
        finalAmount += contribution;
    }   

    System.out.println("Final Amount: "+finalAmount);
}

它的输出将会是:

0 10000.0 600.0
1 11569.0 600.0
2 13290.0361 600.0
3 15177.840598089999 600.0
4 17248.57335204492 600.0
5 19519.960109858075 600.0
6 22011.444244503324 600.0
7 24744.353191795697 600.0
8 27742.0810160807 600.0
9 31030.28866653892 600.0
10 34637.12363832654 600.0
11 38593.46091888038 600.0
12 42933.16728191989 600.0
13 47693.39119153792 600.0
14 52914.88079799795 600.0
15 58642.33274732395 600.0
16 64924.77479053964 600.0
17 71815.98546774292 600.0
18 79374.95445956722 600.0
19 87666.38754669928 600.0
Final Amount: 96761.26049997444

附注: 如果你没有理解上述代码,并且想要更清楚地了解上述计算方法,你应该在任何网站上练习复利部分的应试能力。

英文:

I didn't understand your question thoroughly but it looks like you want to calculate Compound Interest yearly with a contribution. I assume contribution is made every year at the start of the date starting from every first year.

Also, next time when you ask please check Stackoverflow How to Ask. It provides better readability<br>

As per my understanding:

public static void main(String[] args) {
    
    double contribution = 600; //Yearly contribution
    double initialAmount = 10000; 
    double rateOfInterest = 9.69; //9.96% per anum
    double years = 10;

    double rateFactor = 1 + rateOfInterest/100; //Rate factor = 1.969 if rate is 10%

    //Final calculation Assuming contribution is made on first day of year including first year also
    double finalAmount = initialAmount;
    for(int year=0; year&lt;years; year++){
        System.out.println(year+&quot; &quot;+finalAmount+&quot; &quot;+contribution);
        
        finalAmount = finalAmount*rateFactor;
        finalAmount += contribution;
    }   
    
    System.out.println(&quot;Final Amount: &quot;+finalAmount);
}

Its output will be:

0 10000.0 600.0
1 11569.0 600.0
2 13290.0361 600.0
3 15177.840598089999 600.0
4 17248.57335204492 600.0
5 19519.960109858075 600.0
6 22011.444244503324 600.0
7 24744.353191795697 600.0
8 27742.0810160807 600.0
9 31030.28866653892 600.0
10 34637.12363832654 600.0
11 38593.46091888038 600.0
12 42933.16728191989 600.0
13 47693.39119153792 600.0
14 52914.88079799795 600.0
15 58642.33274732395 600.0
16 64924.77479053964 600.0
17 71815.98546774292 600.0
18 79374.95445956722 600.0
19 87666.38754669928 600.0
Final Amount: 96761.26049997444

PS: If you didn't understand the above code and want more clarity on the above calculation method. You should practice more on the Compound Interest section of Aptitude from any website.

huangapple
  • 本文由 发表于 2020年9月18日 13:06:18
  • 转载请务必保留本文链接:https://go.coder-hub.com/63949638.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定