Teddy Salad

Greenhorn
+ Follow
since Mar 27, 2006
Cows and Likes
Cows
Total received
0
In last 30 days
0
Total given
0
Likes
Total received
0
Received in last 30 days
0
Total given
0
Given in last 30 days
0
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Teddy Salad

It is a lot of code. I am trying to do an exercise in a book. I guess the logic is solve the problem with long inefficient code and then when you master the skills solve things with code that is sleeker. Where would you declare the trace?
15 years ago
More on this app. Two static methods are used. parseMonthlyPay validates the first entry. It makes sure the monthly payment is a number and is positive. I want to eventually validate all inputs but I am doing this incrementally to make sure this is working first. The method calculateFutureValue takes the inputs monthly pay, interest rate, and years and comes up with the future value. Thanks.
15 years ago
This program uses 3 dialog boxes to gather data to use in a future value calculation. My progam gets to the first dialog box but then exits. Here is the code:

import javax.swing.*;
import java.text.*;
/**
*
* @author
*/
public class FutureValueApp {

/** Creates a new instance of FutureValueApp */
public FutureValueApp() {
}

public static void main(String[] args){
String choice = "";
try{while (!(choice.equalsIgnoreCase("x"))){

String paymentString = JOptionPane.showInputDialog(
null, "Enter monthly payment: ", "Future Value", JOptionPane.PLAIN_MESSAGE);
double monthlyPayment = parseMonthlyPay(paymentString);

String rateString = JOptionPane.showInputDialog(
null, "Enter yearly interest rate: ", "Future Value", JOptionPane.PLAIN_MESSAGE);
double interestRate = Double.parseDouble(rateString);
double monthlyInterestRate = interestRate/12/100;

String yearsString = JOptionPane.showInputDialog(
null, "Enter number of years: ", "Future Value", JOptionPane.PLAIN_MESSAGE);
int years = Integer.parseInt(yearsString);
int months = years * 12;

double futureValue = calculateFutureValue(monthlyPayment,
months, monthlyInterestRate);

NumberFormat currency = NumberFormat.getCurrencyInstance();
NumberFormat percent = NumberFormat.getPercentInstance();
percent.setMinimumFractionDigits(2);
String message =
"Monthly payment: " + currency.format(monthlyPayment) + "\n"
+ "Yearly interest rate: " + percent.format(interestRate/100) + "\n"
+ "Number of years: " + years + "\n"
+ "Future value: " + currency.format(futureValue) + "\n\n"
+ "To continue, press Enter.\n"
+ "To exit, enter 'x': ";
choice = JOptionPane.showInputDialog(null,
message, "Future Value", JOptionPane.PLAIN_MESSAGE);
}//end of try
}
catch(NullPointerException e) {// catch that handles exception of user pressing the cancel button
System.exit(0);

}
//System.exit(0);
}//end of main method

private static double parseMonthlyPay(String payString){
double monthlyPayment = 0;
boolean tryAgain = true;
while(tryAgain) {
try{
monthlyPayment = Double.parseDouble(payString);
while (monthlyPayment <=0){
payString = JOptionPane.showInputDialog(
"Invalid monthly payment. \n"
+ "Please enter a positive number: ");
monthlyPayment = Double.parseDouble(payString);
}

}

catch(NumberFormatException e){
payString = JOptionPane.showInputDialog(
"Invalid monthly payment. \n"
+ "Please enter a number");
}
}
return monthlyPayment;
}

private static double calculateFutureValue(double monthlyPayment,
int months, double interestRate){
int i = 1;
double futureValue = 0;
while (i <= months) {
futureValue = (futureValue + monthlyPayment) *
(1 + interestRate);
i++;
}
return futureValue;
}


}
15 years ago