import java.util.*; public class RetirementCalculatorModel { /* input fields */ private HashMap myFields; public RetirementCalculatorModel() { myFields = new HashMap(); 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; } }