99shark

03-24-2012, 04:29 PM

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: SR-mf-003- 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 one-liner 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 = dblM-dblH;

//Step 3: Calculate Q = P - C, this is the new balance of your principal of your loan.

double dblQ = dblP-dblC;

//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");

}

}

}

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: SR-mf-003- 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 one-liner 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 = dblM-dblH;

//Step 3: Calculate Q = P - C, this is the new balance of your principal of your loan.

double dblQ = dblP-dblC;

//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");

}

}

}