Reputation: 25
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("Enter starting year: ");
Scanner input2 = new Scanner (System.in);
System.out.print("Enter starting balance: ");
Double principal = input1.nextDouble();
System.out.print("Enter additional annual contribution: ");
Double contribution = input1.nextDouble();
System.out.print("Enter annual growth rate: ");
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 + " " + 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
Upvotes: 0
Views: 519
Reputation: 461
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.
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<years; year++){
System.out.println(year+" "+finalAmount+" "+contribution);
finalAmount = finalAmount*rateFactor;
finalAmount += contribution;
}
System.out.println("Final Amount: "+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: For more clarity on the above calculation method, you should practice more on the Compound Interest section of Aptitude from any website.
Upvotes: 1