if(income>=2000 && income<5000){
....
}else if(income<20000){
...
}else if(income<40000){
...
}
代码中的 5000.5+15000.01+3000*0.15 之类的常数直接写成值?
流程就是这样,简化的地方只能是if if 改成if else if
//定义一个数轴list
private statict List<StartAndEndAndFunction> sefList = new ArrayList();
//初始化数轴
static{
sefList.add(new StartAndEndAndFunction(2000,5000,new CalculationFunciton()));
sefList.add(new StartAndEndAndFunction(5000,8000,new CalculationFunciton()));
.....
}
//定义计算方法
pulic statict double getNeedPayMoney(double money){
//循环进行匹配
for(StartAndEndAndFunction startAndEndAndFunction : sefList ){
if(money>=startAndEndAndFunction.getStart()&&money<startAndEndAndFunction.getEnd()){
return startAndEndAndFunction.getFunciton.doCalculation(money);
}
}
retrun 0;
}
//StartAndEndAndFunction 的结构
public class StartAndEndAndFunction {
private double start;
private double end;
private CalculationFunciton calculationFunciton;
....
}
//CalculationFunciton是一个接口,有个doCalculation(money)方法,然后每个区间都有自己的实现类
//写的伪代码,就这个意思,不喜勿喷