Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

What is needed: 1. Declare a variable at the beginning of the main method for an

ID: 3654903 • Letter: W

Question

What is needed: 1. Declare a variable at the beginning of the main method for an arraylist that stores strings 2. After the code that calculates, formats and displays the results for each calculation, add code that formats a string with the results of the calculation and then stores the string in the array list. 3. Add code to display the elements in the array list at the console when the user indicates that the program should end. 4. Test by entering at least 3 future value calculations. Starter File: public class FutureValueApp { public static void main(String[] args) { // display a welcome message System.out.println("Welcome to the Future Value Calculator"); System.out.println(); // perform 1 or more calculations Scanner sc = new Scanner(System.in); String choice = "y"; while (choice.equalsIgnoreCase("y")) { // get the input from the user System.out.println("DATA ENTRY"); double monthlyInvestment = getDoubleWithinRange(sc, "Enter monthly investment: ", 0, 1000); double interestRate = getDoubleWithinRange(sc, "Enter yearly interest rate: ", 0, 30); int years = getIntWithinRange(sc, "Enter number of years: ", 0, 100); // calculate the future value double monthlyInterestRate = interestRate/12/100; int months = years * 12; double futureValue = calculateFutureValue( monthlyInvestment, monthlyInterestRate, months); // get the currency and percent formatters NumberFormat currency = NumberFormat.getCurrencyInstance(); NumberFormat percent = NumberFormat.getPercentInstance(); percent.setMinimumFractionDigits(1); // format the result as a single string String results = "Monthly investment: " + currency.format(monthlyInvestment) + " " + "Yearly interest rate: " + percent.format(interestRate/100) + " " + "Number of years: " + years + " " + "Future value: " + currency.format(futureValue) + " "; // print the results System.out.println(); System.out.println("FORMATTED RESULTS"); System.out.println(results); // see if the user wants to continue System.out.print("Continue? (y/n): "); choice = sc.next(); System.out.println(); } } public static double getDouble(Scanner sc, String prompt) { boolean isValid = false; double d = 0; while (isValid == false) { System.out.print(prompt); if (sc.hasNextDouble()) { d = sc.nextDouble(); isValid = true; } else { System.out.println("Error! Invalid decimal value. Try again."); } sc.nextLine(); // discard any other data entered on the line } return d; } public static double getDoubleWithinRange(Scanner sc, String prompt, double min, double max) { double d = 0; boolean isValid = false; while (isValid == false) { d = getDouble(sc, prompt); if (d <= min) System.out.println( "Error! Number must be greater than " + min + "."); else if (d >= max) System.out.println( "Error! Number must be less than " + max + "."); else isValid = true; } return d; } public static int getInt(Scanner sc, String prompt) { boolean isValidInt = false; int i = 0; while (isValidInt == false) { System.out.print(prompt); if (sc.hasNextInt()) { i = sc.nextInt(); isValidInt = true; } else { System.out.println("Error! Invalid integer value. Try again."); } sc.nextLine(); // discard any other data entered on the line } return i; } public static int getIntWithinRange(Scanner sc, String prompt, int min, int max) { int i = 0; boolean isValid = false; while (isValid == false) { i = getInt(sc, prompt); if (i <= min) System.out.println( "Error! Number must be greater than " + min + "."); else if (i >= max) System.out.println( "Error! Number must be less than " + max + "."); else isValid = true; } return i; } public static double calculateFutureValue(double monthlyInvestment, double monthlyInterestRate, int months) { double futureValue = 0; for (int i = 1; i <= months; i++) { futureValue = (futureValue + monthlyInvestment) * (1 + monthlyInterestRate); } return futureValue; } }

Explanation / Answer

import java.text.*; import java.util.ArrayList; public class FutureValueApp { public static void main(String[] args) { ArrayList code = new ArrayList();//I ADDED THIS // display a welcome message System.out.println("Welcome to the Future Value Calculator"); System.out.println(); // perform 1 or more calculations Scanner sc = new Scanner(System.in); String choice = "y"; while (choice.equalsIgnoreCase("y")) { ..... // format the result as a single string String results = "Monthly investment: " + currency.format(monthlyInvestment) + " " + "Yearly interest rate: " + percent.format(interestRate/100) + " " + "Number of years: " + years + " " + "Future value: " + currency.format(futureValue) + " "; // save the String in the ArrayList code.add(results); // see if the user wants to continue System.out.print("Continue? (y/n): "); choice = sc.next(); System.out.println(); } // now that we are all done // print the results //I ADDED THIS System.out.println(); System.out.println("FORMATTED RESULTS"); System.out.println("Inv/Mo. Rate Years Future Value"); System.out.println("------. ---- ----- ------ -----"); // prints the Strings stored in the ArrayList for(int i = 0; i
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote