代码
public class aa {
public static void main(String[] args) {double before=0;//当前到手金额
double after=0;//涨薪1元后到手金额
double max=0;//最大收益
for (int value=1500; value < 10000000; value++) {
//年终奖金额从1500到1千万的计算区间,从小到大依次计算
before=ComputeYear(value);//当前金额年终奖
after=ComputeYear(value+1);//涨薪一元,计算年终奖
if(before>after){//当涨薪一元时,若到手金额比增加前少
System.out.println("陷阱金额区间开始--"+value);//记录陷阱金额
System.out.println("当前收益"+before);//记录陷阱金额
max=before>max?before:max;
System.out.println("最大收益"+max);//记录陷阱金额
}else if(before<max){
if(before+1>max){//到手金额即将超过张新前最大金额数
System.out.println("陷阱金额区间结束--"+value);//记录陷阱金额
System.out.println("当前收益"+before);//记录陷阱金额
System.out.println("最大收益"+max);//记录陷阱金额
}
}else{
max=after;
}
}
}
public static double ComputeYear(double before){
double temp=Math.ceil(before*100/12)/100;
if(temp<0){
return before;
}else if(0<temp&&temp<=1500){
return before-before*0.03;
}else if(1500<temp&&temp<=4500){
return before-before*0.1+105;
}else if(4500<temp&&temp<=9000){
return before-before*0.2+555;
}else if(9000<temp&&temp<=35000){
return before-before*0.25+1005;
}else if(35000<temp&&temp<=55000){
return before-before*0.30+2755;
}else if(55000<temp&&temp<=80000){
return before-before*0.35+5505;
}else if(80000<temp){
return before-before*0.45+13505;
}
return 0;
}
}
运行结果
陷阱金额区间开始--18000
当前收益17460.0
最大收益17460.0
陷阱金额区间结束--19283
当前收益17459.7
最大收益17460.0
陷阱金额区间开始--54000
当前收益48705.0
最大收益48705.0
陷阱金额区间结束--60187
当前收益48704.6
最大收益48705.0
陷阱金额区间开始--108000
当前收益86955.0
最大收益86955.0
陷阱金额区间结束--114599
当前收益86954.25
最大收益86955.0
陷阱金额区间开始--420000
当前收益316005.0
最大收益316005.0
陷阱金额区间结束--447499
当前收益316004.30000000005
最大收益316005.0
陷阱金额区间开始--660000
当前收益464755.0
最大收益464755.0
陷阱金额区间结束--706537
当前收益464754.05000000005
最大收益464755.0
陷阱金额区间结束--706538
当前收益464754.7
最大收益464755.0
陷阱金额区间开始--960000
当前收益629505.0
最大收益629505.0
陷阱金额区间结束--1119999
当前收益629504.45
最大收益629505.0