Enjoy an ad free experience by logging in. Not a member yet? Register.

Results 1 to 1 of 1
Thread: Help with 2 issues

03242012, 04:29 PM #1
 Join Date
 Mar 2012
 Posts
 1
 Thanks
 0
 Thanked 0 Times in 0 Posts
Help with 2 issues
Hi,
I have written the program below and I am encountering 2 issues. 1. The principal paid is listing with more that 2 decimal places and 2. I need the program to stop after 360th payment.
Thanks
/*
* To change this template, choose Tools  Templates
* and open the template in the editor.
*/
package assign2_ppoland;
/**
*
* @author ppoland
// * Virtual Organization: McBride Financial Services
// * Request Name: SRmf003 Mortgage Payment Calculator
// * Change Request: 1
// Requestor: Dwain Hammer  Billings, MT
// Description: Write the program in Java (without a graphical user
// * interface) using a loan amount of $200,000 with an
// * interest rate of 5.75% and a 30 year term. Display the
// * mortgage payment amount and then list the loan balance
// * and interest paid for each payment over the term of the
// * loan. If the list would scroll off the screen, use loops
// * to display a partial list, hesitate, and then display
// * more of the list.
// */
public class Assign2_PPoland {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
calculateMonthlyPayment();
}
public static void calculateMonthlyPayment()
{
//First you must define some variables to make it easier to set up:
//P = principal, the initial amount of the loan
double dblP = 200000.00;
//I = the annual interest rate (from 1 to 100 percent)
double dblI = 5.75;
//L = length, the length (in years) of the loan, or at least the length over which the loan is amortized.
int intL = 30;
//The following assumes a typical conventional loan where the interest is compounded monthly. First I will define two more variables to make the calculations easier:
//J = monthly interest in decimal form = I / (12 x 100)
double dblJ = dblI / (12 * 100);
//N = number of months over which loan is amortized = L x 12
int intN = intL * 12;
//Okay now for the big monthly payment (M) formula, it is:
// M = P * (J/ (1  (1 + J)^ N)
// J
// M = P x 
//
// 1  ( 1 + J ) ^ N
//
//where 1 is the number one (it does not appear too clearly on some browsers)
double dblM = dblP * (dblJ / (1  Math.pow((1 + dblJ),  intN)));
System.out.println("Monthly Payment = $" +dblM+ "\n");
// So to calculate it, you would first calculate 1 + J then take that to the N (minus N) power, subtract that from the number 1. Now take the inverse of that (if you have a 1/X button on your calculator push that). Then multiply the result times J and then times P. Sorry, for the long way of explaining it, but I just wanted to be clear for everybody.
// The oneliner for a program would be (adjust for your favorite language):
// M = P * ( J / (1  (1 + J) ** N))
calculateAmortizationTable(dblP,dblJ,dblM);
}
public static void calculateAmortizationTable(double dblP,double dblJ, double dblM)
{
//So now you should be able to calculate the monthly payment, M.
//To calculate the amortization table you need to do some iteration (i.e. a simple loop).
//I will tell you the simple steps :
int intCounter =0;
while(dblP>0 ){
intCounter++;
//Step 1: Calculate H = P x J, this is your current monthly interest
double dblH = dblP*dblJ;
//Step 2: Calculate C = M  H, this is your monthly payment minus your monthly interest, so it is the amount of principal you pay for that month
double dblC = dblMdblH;
//Step 3: Calculate Q = P  C, this is the new balance of your principal of your loan.
double dblQ = dblPdblC;
//Step 4: Set P equal to Q and go back to Step 1: You thusly loop around until the value Q (and hence P)
//goes to zero.
dblP=dblQ;
System.out.print("Payment # " + intCounter);
System.out.printf(" Loan Balance = $%.2f",dblP);
System.out.printf(" Interest Paid = $%.2f",dblH);
System.out.printf(" Principal Paid = " + dblC + "\n");
}
}
}