Solved

Java Mortgage Calculator

Posted on 2008-10-20
8
395 Views
Last Modified: 2013-11-23
Hello experts, I am in Java class and I am having difficulties with my assignment.  I have an assignment that I must create a calculator that can show the monthly payments on a 30 year mortgage. The principals are from $100000 -$200000 and shows the amount of interest between 6%-10% in 0.5% intervals. The output should be in a table format. Here is what our instructor is asking us to perform:

 Programming problem 2: Mortgage monthly payment
 
           The monthly payment on mortgage loan of L dollars, at a rate of interest r is given
         by

          Monthly payment = [ L(r/12)(1 + r/12)  12 n] / [(1 + r/12)12n - 1]

Where N is the number of years of mortgage. Write a program to find the monthly
payment for 30 years, for principals from $100,000 through $200,000(with increments
of $20,000) and interest rates of 6% through 10% (with increments of 0.5%). Print
monthly payment as a whole number (rounded off).
The output must be a neat table, similar to the following (your answers may be slightly
different because of rounding off).
Principal 6% 6.5% 7% 7.5% 8% 8.5% 9% 9.5% 10%
100000 600 632 665 699 733 768 804 840 877
120000 719 758 798 839 880 922 965 1009 1053
140000 & & & & & & & & &
160000 & & & & & & & & &
180000 & & & & & & & & &
200000 & & & & & & & & &
Hint: Use the following idea to compute (1 + r/12)
double temp = 1+r/12;
double temp1 = 1;
for (int i = 1; i<=12*N;i++)
{
temp1 = temp1*temp;
}
The final formula now becomes:
double mp = (L*(r/12)*temp1)/(temp1-1);


 Here is what I have so far with my code:

 import java.util.*;

class mortgageCalculator;
{
public static void main(String[]args)
{
double temp = 1+r/12;
double temp1 = 1;
double mp = (L*(r/12)*temp1)/(temp1-1);
for (int i = 1; i<=12*30;i++)    
{
temp1 = temp1*temp;
}

for(temp1=.06;temp1<=.10;temp1++) // Is this the loop for the interest rate??
{
System.out.println("Monthly Payments" + mp);
}

for( int principal=100000;principal<=200000;principal++) // I am guessing there needs to be a loop to set the principal?
{

}

This table format looks like an array format. We haven't gotten into array's yet and I am pretty confused and unsure how to get started. I don't think this is supposed to be a GUI type of program. Any advice and guidance you could give me would be great. Thank you for your time.
0
Comment
Question by:Fletch3
  • 3
  • 3
  • 2
8 Comments
 
LVL 2

Expert Comment

by:aaronblum
ID: 22756790
I think that the question is simply asking you to print your output in a orderly list of columns.  If you tackle it line by line it shouldn't be too terrible.  I recommend looking at the PrintFormat java class documentation.  It may make this easier.
0
 
LVL 59

Expert Comment

by:Kevin Cross
ID: 22757001
You will need to do some work on what you have already as well.  Here is a good starting point for you on all of it and should also cover the PrintFormat suggestion above:
http://java.sun.com/docs/books/tutorial/
0
 

Author Comment

by:Fletch3
ID: 22761550
So all I need to do is


System.out.println("Principal 6%  6.5%  7%  7.5%  8%  8.5%  9%  9.5% 10%");
System.out.println(" 100000  600 632 665 699 733 768 804 840 877");

and so on untill the table portion is complete?  I guess to calculate the monthly payments I can just use the portion that was given :

 import java.util.*;

class mortgageCalculator;
{
public static void main(String[]args)
{
double temp = 1+r/12;
double temp1 = 1;
double mp = (L*(r/12)*temp1)/(temp1-1);
for (int i = 1; i<=12*30;i++)    
{
temp1 = temp1*temp;
}

I guess I haven't declared the neccessary variables. Am I on the right track now?
0
 
LVL 2

Accepted Solution

by:
aaronblum earned 250 total points
ID: 22761896
Sounds like it, I would be very careful doing the calculations in the for loop you are using to print.  It may be easier to use more than one loop so you can keep better track of things.  Not sure if you have covered that yet and that is a personal opinion so choose the looping option that you are most comfortable with.

Good luck
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 59

Expert Comment

by:Kevin Cross
ID: 22764129
Correct.  I agree with aaron.  You will still need to define L and r, remembering that their are different values for L and r increasing at specified increments.
0
 

Author Comment

by:Fletch3
ID: 22765239
Yes, we are currently doing loops. I figured that maybe a loop needs to be in place to show the loan amount and the interest.  I am working on getting the variables correct but I am not sure if I am doing it right. Plus it doesn't seem to compile. This is my code so far:

import java.util.*;

class mortgageCalculator
{
public static void main(String[]args)
{      
int l;
double rate;
double interest;
double r;
double temp = 1+r/12;
double temp1 = 1;
double mp = (l*(r/12)*temp1)/(temp1-1);
temp1 = temp1*temp;

for (int i = 1; i<=12*30;i++)  

rate = r;
for (rate = .006; rate <= .10; rate++)
{
    System.out.println("Amount of Interest" + rate);
}      
dollarsLoan = l;
for (dollarsLoan = 100000; dollarsLoan <= 200000; dollarsLoan++)
{
   System.out.println("Mortgage Amount" + dollarsLoan);
}

System.out.println(" 6% 6.5% 7% 7.5% 8% 8.5% 9% 9.5% 10%");
System.out.println("Principal");
System.out.println("100000");
System.out.println("120000");
System.out.println("140000");
System.out.println("160000");
System.out.println("180000");
System.out.println("200000");

System.out.println("Monthly Payments" + mp);
}
 

}

 Am I on the right track?
 
0
 
LVL 2

Expert Comment

by:aaronblum
ID: 22766815
I would check your output errors from the compiler to see why it's not compiling.  It'll probably say something about an undefined variable.

You'll get a better idea of how tings are going if you can compile and run the code.  Make that your first priority, then have a look at your output.

It does look look like a good start though.
0
 

Author Closing Comment

by:Fletch3
ID: 31507742
The solution got me on the right track but a brief example of how to make the loop in the program what you meant would have helped me understand  a little bit better
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Unable to open debugger port in Intellij idea 6 144
advertisement module in core php 4 145
Java Server Faces parameter pass? 6 39
couple of eclipse 5 23
After being asked a question last year, I went into one of my moods where I did some research and code just for the fun and learning of it all.  Subsequently, from this journey, I put together this article on "Range Searching Using Visual Basic.NET …
By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
This video teaches viewers about errors in exception handling.

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now