This project will allow you to apply your knowledge of variables, assignments, expressions, type casting, input, output, and basic algorithm design. The program can be completed using variable assignment statements as well as input and output statements. You are free, however, to use any other features of Java.
You will write a Java application to compute and display the number of months needed to pay off credit card debt. Your program will prompt the user for the following three things:
• the principal, which is the amount of money owed on the credit card;
• the annual interest rate;
• the monthly payment, the amount the user plans to pay the credit card company each month.
Based on these inputs, the program will compute the number of months required to pay the debt. It will also compute the total amount paid to the credit card company after all payments are made, the total the amount of interest paid, and the overpayment.
The number of months needed to pay off the debt can be calculated using the following formula.
𝑙𝑙𝑙𝑙𝑙𝑙𝑎𝑎𝑙𝑙𝑙𝑙𝑎𝑎𝑙𝑙𝑚𝑚𝑙𝑙𝑎𝑎𝑙𝑙𝑎𝑎𝑚𝑚𝑎𝑎𝑙𝑙𝑚𝑚𝑙𝑙
𝑙𝑙𝑙𝑙(𝑚𝑚𝑚𝑚𝑙𝑙𝑚𝑚ℎ𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑚𝑚𝑙𝑙𝑙𝑙𝑚𝑚) −𝑙𝑙𝑙𝑙𝑚𝑚𝑚𝑚𝑙𝑙𝑚𝑚ℎ𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑚𝑚𝑙𝑙𝑙𝑙𝑚𝑚 − × 𝑝𝑝𝑎𝑎𝑝𝑝𝑙𝑙𝑝𝑝𝑝𝑝𝑝𝑝𝑙𝑙𝑙𝑙
1200.0
𝑙𝑙𝑙𝑙𝑙𝑙𝑎𝑎𝑙𝑙𝑙𝑙𝑎𝑎𝑙𝑙𝑚𝑚𝑙𝑙𝑎𝑎𝑙𝑙𝑎𝑎𝑚𝑚𝑎𝑎𝑙𝑙𝑚𝑚𝑙𝑙
𝑙𝑙𝑙𝑙 1200.0 + 1.0
In the formula, ln(x) is the natural logarithm of a real number x 0.
The total amount paid to the credit card company is the ceiling of the number of months needed to pay off the debt multiplied by the monthly payment. The total interest paid is simply the principal amount (which is provided by the user) subtracted from the total amount paid to the credit card company. The overpayment is the amount overpaid to the credit card company, which is an algorithm you’ll have to figure out. Details about these computations are given in the Program Requirements section.
The following is a sample run, and the input (5000.00, 15.0, 100.00—shown in red for demonstration purposes only) and output of your submitted program should be formatted the same way when run in Eclipse’s console or on a command line. Additional sample runs are included at the end of this document.
Principal:
5000.00
Annual Interest Rate (%):
15.0
Monthly Payment:
100.00
Months Needed To Pay Off:
79
Total Amount Paid:
$7900.00
Total Interest Paid:
$2900.00
Overpayment:
$4.43
Program Requirements
The instructions below must be followed in order for full credit to be awarded. Following the instructions is a vital part to this and all programming projects.
1. The name of the program file must be PayoffDebt.java.
2. The class name in the file must be PayoffDebt (in Java, the class name and .java file name must match).
3. The program must read inputs and display the results in exactly as indicated in the examples.
4. The annual interest rate should be entered as a percent as shown in the examples.
5. The Months Needed To Pay Off must be stored with two different variables. One variable should store the raw value as a double computed by the formula above. The other variable should be stored and written to output as a 32-bit integer, and it should contain the ceiling of the raw value (the smallest integer greater than or equal to it). For instance, the integer ceiling of 9.2 is 10.
6. All other numeric variables must be double data types.
7. You must figure out the algorithm to compute the overpayment based on the examples given at the end of this project. Hint: It uses both the floating point and integer values of The Months Needed To Pay Off. Write its algorithm in pseudocode in the comments of your project directly above the line(s) of source code that computes the overpayment.
8. The Total Amount Paid, Total Interest Paid, and Overpayment output must be formatted like units of currency. They must have a $ in front of their values, and their values must show only two digits after the decimal point. An example of formatting output can be done with the printf method, and examples of this are shown in the 8th edition of the course textbook. You can also round to two decimal places by using mathematical operations (divide, type casting, and multiply). Your answer must be within .01 of the answer to receive full credit.
9. You must include the Statement of Academic Honesty comment at the top of the program’s source file. Copy and agree to the entirety of the text contained in the file StatementOfAcademicHonesty.txt on the Labs and Projects webpage, and fill in the class name of your .java file, your name, submission date, and the program’s purpose. In the future, every Java source file of every project you submit must have a comment such as this at the top of every source file. Otherwise, points will be deducted from your project.
When writing your program, you may safely assume that all input to the program is valid. That is, you do not need to write code to handle erroneous or ill-formed data entered by the user.
!
Hints
• Aligning the input prompts and the output values will require the use of escape sequences. It is recommended that you use tabs (“\t”) rather than spaces.
• Java's JDK provides a class Math which is always available which contains a method called “ceil” which will return the ceiling of a given number passed as an argument. The returned value will be returned as a double. For example,
double a = Math.ceil(3.4576); // Math.ceil returns 4.00 double b = Math.ceil(4); // Math.ceil returns 4.00
• The JDK's Math class also contains a method called log, which returns the natural logarithm, ln, of its argument. Again, the returned value has type double. For example,
double c = Math.log(12.7);
//Math.log returns
//the ln(12.7)≈2.54160199