public class Steps { public StepSpec computeDesign(double totalRise, double totalRun, StepEvaluator eval, double idealRise){ int numSteps; StepSpec[] ssarray = new StepSpec[3]; double[] goodness = new double[3]; double newrise; double newrun; int i; numSteps = (int) (totalRise / idealRise); for(i = 0; i < 3; i++){ newrise = totalRise / numSteps; newrun = totalRun / (numSteps -1); ssarray[i] = new StepSpec(newrise, newrun, numSteps); goodness[i] = eval.evaluate(ssarray[i]); } if (goodness[1] < goodness[2] && goodness[1] < goodness[3]) return ssarray[1]; if (goodness[2] < goodness[1] && goodness[2] < goodness[3]) return ssarray[2]; if (goodness[3] < goodness[2] && goodness[3] < goodness[1]) return ssarray[3]; } return null; }