Java Programming Assignment 3: Expressions, class Methods, and Parameter passing
Problem Summary
A mortgage company would like you to help compute mortgage payments for its customers, when given a mortgage loan.
The mortgage company currently only issues 30-year mortgage loans, and always requires a 10% down payment to obtain a mortgage loan. Therefore, the Loan Amount will always be 90% of the Purchase Price (the price paid for the home).
To protect its interests, the mortgage company handles paying the property taxes and insurance on the property. Therefore, the monthly mortgage payment consists of three parts:
- property taxes
- insurance
- principle and interest for the loan
The property tax portion is computed as follows:
Home's Assessed Value = 85% of Purchase Price
Annual Property Taxes = 0.63% of Home's Assessed Value + $35.00 admin fee
For example, if the home's purchase price was $101,000.00
The assessed value would be $85,850.00
The annual property taxes would be $540.86 + 35.00 = $575.86
And the monthly property taxes would be $47.99
The insurance portion is computed as follows:
Annual Insurance Premium = 0.49% of Purchase Price Monthly premiums will be rounded to the nearest dollar.
For example, if the home's purchase price was $101,000.00
The annual insurance premium would be $494.90 And the monthly insurance cost would be $41.00
NOTES:
- The tax and insurance percentages are less than 1%, so make sure you enter the values correctly for calculations (i.e. 0.49% == 0.0049)
- Both annual property taxes and annual insurance premiums must be divided by 12 to obtain a monthly cost.
The principle and interest portion is computed as follows:
Monthly Loan Payment = factor x Monthly Interest Rate x Loan Amount factor - 1 where
factor = exp( Loan Length In Months x log(1 + Monthly Interest Rate) );
Predefined exp and log mathematical functions are located in the built-in java.lang.Math class.
The monthly interest rate will be 1/12th of the loan's annual interest rate. Be sure to also convert the percent entered by user (e.g. 5%) to an amount that can be used in calculations (e.g. 0.05).
For example, if the home's purchase price was $101,000.00 and the annual interest was 5%:
The loan amount would be $90,900.00 (after subtracting the down payment)
The monthly interest rate would be 0.00417
The loan length would be 360 months
So the monthly loan payment would be $487.97
NOTE: For hand calculating results to test your program, the equivalent algebraic equation for factor is:
factor = (1 + MonthlyInterestRate) TermInMonths
Overview of Program
In your last two Alice assignments, you:
- Created programs that were broken down into multiple methods.
- Used variables to store user input and calculation results.
- Used parameters and return values to pass information between methods.
This assignment will require you to do the same things in Java. This program will contain:
- A main method to read the inputs from the user, display some values, and call the other methods.
- A method (1) to display a description of what the program will do.
- A method (2) to compute the monthly property tax..
- A method (3) to compute the monthly insurance premium.
- A method (4) to compute the monthly principle and interest loan payment.
- A method (5) to compute and display the results of the program.
Program Requirements
Given the price paid for a home and the annual interest rate for a 30-year loan (both read from the user), compute the individual parts of a monthly mortgage payment, along with the total, as follows:
1. Create only one Java class for this program, named as follows:
LastnameJavaClassName For example: SmithMortgagCalculator
2. Implement the following methods, within this class:
NOTE: All of these methods should have descriptive names that include a verb, describing the methods action.
Method 1: A method to display an explanation of what the program will do to the user.
o This method will not have any parameters or a return value.
Method 2: A method to compute the monthly property tax. This method will:
o Have 1 parameter: the purchase price of the home
o Define and use three local (non-static) constants, that contain the values for:
- the percentage of the purchase price used to compute the home's assessed value
- the percentage of the home's assessed value used to compute the property tax
- the dollar amount of the admin fee
o Compute the monthly property tax using the formulas on page 1
o Return a double value: the monthly property tax payment
Method 3: A method to compute the monthly insurance premium. This method will:
o Have 1 parameter: the purchase price of the home
o Define and use a local (non-static) constant that contains the percentage of the purchase price used to compute the insurance premium.
o Compute the monthly insurance premium using the formulas on page 1
o Use the round method in the java.Math class to round the monthly insurance premium to a whole dollar amount.
o Return a double value: the rounded monthly insurance premium
Method 4: A method to compute the monthly principle and interest loan payment for a 30-year loan. This method will:
o Have 2 parameters:
- the loan amount
- the annual interest rate for the loan
o Define and use a local (non-static) constant that is set to the value of:
- the number of months in the loan period
o Use the exp and log methods from in the java.lang.Math class to calculate the factor
o Compute the monthly principle and interest loan payment using the formulas on page 1
o Return a double value: the monthly loan payment
Method 5: A method to compute and display the results, with no return value. This method will:
o Have 3 parameters:
- the monthly tax payment
- the monthly insurance premium
- the monthly principle and interest loan payment
o Calculate the total monthly mortgage payment
o Use the println and printf statements to:
- Display the header "Monthly Mortgage Payment"
- Display each of the parameter values (the three parts of the mortgage payment), to 2 decimal places, indented under the header and lined up on the decimal points
- Display a dashed addition line below the parts of the mortgage payment.
- Then display the total monthly mortgage payment. This total also be displayed to 2 decimal places, indented under the header, and should line up with the figures above.
3. Within the main method, write the Java code to:
NOTE: The main method will be defined first, at the top of the class, before all the other methods.
- Define and use a local (non-static) constant to hold the percentage of a home's purchase price that a loan will be issued for (used to compute loan amount), set to 90%.
Call method 1 to display the program description.
- Prompt for (using descriptive prompts) and read the user inputs (home's purchase price and loan's annual interest rate).
Sample Display and Input from main method
- Display a few blank lines to separate the input from the output.
- Calculate and display the loan amount to 2 decimal places.
- Call all the calculation methods (methods 2 - 4) to compute the three parts of the monthly mortgage payment, and save the results returned from each.
- Call the method 5 to display the final results.
Sample Output from method 5
Output must display exactly as shown: All decimal points in the payment components and total payment must line up with each other. And the descriptions must be indented 2 spaces.
4. You must also define and use:
o Local variables for each input or computed value, defined using descriptive names and appropriate data types.
WARNING: The methods must be implemented exactly as specified in these requirements.