98 lines
2.9 KiB
Java
98 lines
2.9 KiB
Java
|
|
import java.util.*;
|
|
|
|
public class RetirementCalculatorModel
|
|
{
|
|
/* input fields */
|
|
private HashMap<String, Double> myFields;
|
|
|
|
public RetirementCalculatorModel()
|
|
{
|
|
myFields = new HashMap<String, Double>();
|
|
reset();
|
|
}
|
|
|
|
public void setField(String name, double value)
|
|
{
|
|
myFields.put(name, value);
|
|
}
|
|
|
|
public double getField(String name)
|
|
{
|
|
return (myFields.containsKey(name)) ? myFields.get(name) : 0;
|
|
}
|
|
|
|
public void reset()
|
|
{
|
|
myFields.clear();
|
|
|
|
setField("current income", 0);
|
|
setField("income wanted", 0);
|
|
setField("employer pension", 0);
|
|
setField("part time income", 0);
|
|
setField("other income", 0);
|
|
setField("age", 30);
|
|
setField("retirement age", 65);
|
|
setField("savings", 0);
|
|
setField("life expectancy", 82);
|
|
|
|
calculate();
|
|
}
|
|
|
|
public void calculate()
|
|
{
|
|
setField("social security", calculateSocialSecurity());
|
|
}
|
|
|
|
private double calculateMakeUpFactor()
|
|
{
|
|
int retire_age_index = (int) getField("retirement age");
|
|
int life_expectancy_index = (int) getField("life expectancy");
|
|
|
|
if (retire_age_index == 55) retire_age_index = 0;
|
|
else if (retire_age_index == 60) retire_age_index = 1;
|
|
else if (retire_age_index == 70) retire_age_index = 3;
|
|
else retire_age_index = 2;
|
|
|
|
if (life_expectancy_index == 86) life_expectancy_index = 1;
|
|
else if (life_expectancy_index == 89) life_expectancy_index = 2;
|
|
else if (life_expectancy_index == 92) life_expectancy_index = 3;
|
|
else if (life_expectancy_index == 94) life_expectancy_index = 4;
|
|
else if (life_expectancy_index == 97) life_expectancy_index = 5;
|
|
else life_expectancy_index = 0;
|
|
|
|
final double makeup_factors[] = {
|
|
18.79, 20.53, 21.71, 22.79, 23.46, 24.40,
|
|
16.31, 18.32, 19.68, 20.93, 21.71, 22.79,
|
|
13.45, 15.77, 17.35, 18.79, 19.68, 20.93,
|
|
10.15, 12.83, 14.65, 16.31, 17.35, 18.79
|
|
};
|
|
|
|
return makeup_factors[retire_age_index * 6 + life_expectancy_index];
|
|
}
|
|
|
|
private double calculateRetirementFactor()
|
|
{
|
|
int retire_age_index = (int) getField("retirement age");
|
|
if (retire_age_index == 55) return 8.8;
|
|
else if (retire_age_index == 60) return 4.7;
|
|
else return 0.0;
|
|
}
|
|
|
|
private double calculateSocialSecurity()
|
|
{
|
|
double current_income = getField("current income");
|
|
if (current_income < 25000.0)
|
|
return 8000.0;
|
|
else if (current_income <= 40000.0)
|
|
return 12000.0;
|
|
else
|
|
return 14500.0;
|
|
}
|
|
|
|
private double calculateSavingsFactor()
|
|
{
|
|
return 0.0;
|
|
}
|
|
}
|