aspose file tools*
The moose likes Beginning Java and the fly likes  noob with a looping interest rate problem Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark " noob with a looping interest rate problem " Watch " noob with a looping interest rate problem " New topic
Author

noob with a looping interest rate problem

Peter Haugen
Greenhorn

Joined: Feb 08, 2013
Posts: 12
So, I am able to get the program to loop but it is giving me the incorrect values. Instead of recalculating the interest, it is just adding the original interest to all 18 months. Any one have any helpful hints? Thanks in advance.


Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 8250
    
  23

Valley Kayak wrote:Any one have any helpful hints?

Sure. Assuming you want compound interest (which is what it looks like) you need to recalculate 'nextmonth' and update the principal for each iteration of the loop. You're doing neither.

Winston

Isn't it funny how there's always time and money enough to do it WRONG?
Articles by Winston can be found here
Daryle Foulke
Greenhorn

Joined: Aug 27, 2009
Posts: 8

Winston is right. In your for loop all your doing is some math and printing the results to the screen.



==============================
-Daryle
Peter Haugen
Greenhorn

Joined: Feb 08, 2013
Posts: 12
Winston Gutkowski wrote:
Valley Kayak wrote:Any one have any helpful hints?

Sure. Assuming you want compound interest (which is what it looks like) you need to recalculate 'nextmonth' and update the principal for each iteration of the loop. You're doing neither.

Winston



You are correct, I am trying to determine compound interest. I understand that I need to recalculate the monthly amount each time. At this point the program calculates the first months interest and then just applies that to the rest of the months. It seems like the formula should grow for each iteration of the loop. For example, the first month would be " initialAmount + initialAmount * (rate / 1200) " = secondMonth. Then the third month would look like " secondMonth + secondMonth * (rate / 1200) " = third month...... until it reaches the end of the loop. I guess that I am really stuck on how to adjust my formula to take into account the growth from the first month, second month and on through the loop.

I also tried just entering the compound interest formula, but would that work inside the loop? Also, I had problems with Math.pow and ended up with much larger values than what I needed.
Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 8250
    
  23

Valley Kayak wrote:I guess that I am really stuck on how to adjust my formula to take into account the growth from the first month, second month and on through the loop.

And that's because you''re not updating the principal (which you've unfortunately called 'initialAmount'). Try and think how you would do that inside your loop.

Winston
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 39885
    
  28
What Winston means is, you have to get both the programming and the formula right if you want the right answer. At this point it’s the maths that is letting you down.
Peter Haugen
Greenhorn

Joined: Feb 08, 2013
Posts: 12
Alright, so I started over and tried a new tactic. At this point I am getting values that are very close to being correct (horse shoes and hand grenades< i know.) The problem now is that I seem to be having rounding issues. The first value is off by .04 and the other values pretty much follow this trend. I am testing the program at $10000, 5.75%, and 18 months. My first value is 10047. 95 vs the correct value of 10047.91 and the final value outputs at 10899.28 vs a correct value of 10898.54. Would this be a formatting difference?

public static void main(String[] args) {
Scanner input = new Scanner(System.in);

double principal = 0; //Starting amount entered by user
double interestRate = 0; // interest rate as ***% entered by user
double numberOfMonths = 0; //Entered by the user
double amount; //total after the time period.

//User enters principal, interest rate, and number of months.
//Principal
System.out.print("Enter starting amount :$ ");
principal = input.nextDouble();
//Interest Rate
System.out.print("Enter interest rate: ");
interestRate = input.nextDouble() / 100.0;
//Number of Months
System.out.print("Enter time period: ");
numberOfMonths = input.nextDouble();


for(int month = 1 ; month <= numberOfMonths ; month++){
amount = principal * Math.pow(1 + interestRate / numberOfMonths, (numberOfMonths / 12) * month);


System.out.println("After month # " + month + " The amount in the CD is $ " + amount);

}

}
Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 8250
    
  23

Valley Kayak wrote:Alright, so I started over and tried a new tactic.

First mistake.

You were already told what your problem was, but instead of solving it, you've completely rewritten your program to use a different set of logic, ie, the
p = (1+r)^n formula; and unfortunately, you appear to have got it wrong.

Specifically: interestRate / numberOfMonths will only work if numberOfMonths is 12 (I assume that interestRate is an annual interest rate and that this is a monthly calculation).

My advice: Go back and get your old program working first. Then start on your new one.

Winston
Peter Haugen
Greenhorn

Joined: Feb 08, 2013
Posts: 12
Winston Gutkowski wrote:
Valley Kayak wrote:Alright, so I started over and tried a new tactic.



My advice: Go back and get your old program working first. Then start on your new one.

Winston


I am back on the old one...
I thought that in your earlier recommendation, where you linked me to the wiki page on compound interest, you were suggesting that I try to use that formula...Regardless,
I have tried what seems like 50 different things and nothing seems to be working . I know that I need to update the principal after each loop (on my original program)I just don't know how to do that. I am sorry if this is like screaming at a wall for you, but I have been trying different formulas all morning and nothing is working for me.
Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 8250
    
  23

Peter Haugen wrote:I thought that in your earlier recommendation, where you linked me to the wiki page on compound interest, you were suggesting that I try to use that formula...

Oh, sorry. It was simply an info link to make sure that we were both talking about the same thing.

I have tried what seems like 50 different things and nothing seems to be working. I know that I need to update the principal after each loop (on my original program)I just don't know how to do that.

OK. If you want to update a value, you need to reassign it.

So, if I want to add 10 to a value and make sure it sticks, I need to write:
x = x + 10;

HIH

Winston
Peter Haugen
Greenhorn

Joined: Feb 08, 2013
Posts: 12
I got it finally...

for (int i = 1; i <= numbMonths; i++){
System.out.println("Month " + i );
principal = principal + principal * interestRate / 1200;
System.out.println(principal);

Thanks for all of your help... I am sorry that it has taken me so long, but I was trying to do that for hours and for some reason it just worked. Obviously it worked because I did it correctly unlike the ~150 other tries.
This is really a great site and I hope that I can contribute more in the future...
Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 8250
    
  23

Peter Haugen wrote:Thanks for all of your help... I am sorry that it has taken me so long, but I was trying to do that for hours and for some reason it just worked. Obviously it worked because I did it correctly unlike the ~150 other tries.
This is really a great site and I hope that I can contribute more in the future...

Thanks for the kudos, but the fact is, it didn't "just" work; it worked because you were doing it correctly.

Well done.

Winston
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: noob with a looping interest rate problem