企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?这个题目小弟已经写出来了,但是用的是很笨的方法, 请教高手要如何优化一下呢,如果有更多的条件的话,我作出来的这个方法就很麻烦了。。if(s<=100000){
sum10=(int) (s*0.1);
System.out.println(sum10);
}
else if(s>100000&&s<=200000){
sum10=(int)((s-100000)*0.075+(100000*0.1));
System.out.println(sum10);
}
else if(s>200000&&s<=400000){
sum10=(int)((s-200000)*0.05+100000*0.075+100000*0.1);
System.out.println(sum10);
}
else if(s>400000&&s<=600000){
sum10=(int)((s-400000)*0.03+(200000)*0.05+(100000)*0.075+100000*0.1);
System.out.println(sum10);
}
else if(s>600000&&s<=1000000){
sum10=(int)((s-600000)*0.015+(200000)*0.03+(200000)*0.05+(100000)*0.075+100000*0.1);
System.out.println(sum10);
}
else if(s>1000000){
sum10=(int)((s-1000000)*0.01+(200000)*0.015+(200000)*0.03+(200000)*0.05+(100000)*0.075+100000*0.1);
System.out.println(sum10);
}
sum10=(int) (s*0.1);
System.out.println(sum10);
}
else if(s>100000&&s<=200000){
sum10=(int)((s-100000)*0.075+(100000*0.1));
System.out.println(sum10);
}
else if(s>200000&&s<=400000){
sum10=(int)((s-200000)*0.05+100000*0.075+100000*0.1);
System.out.println(sum10);
}
else if(s>400000&&s<=600000){
sum10=(int)((s-400000)*0.03+(200000)*0.05+(100000)*0.075+100000*0.1);
System.out.println(sum10);
}
else if(s>600000&&s<=1000000){
sum10=(int)((s-600000)*0.015+(200000)*0.03+(200000)*0.05+(100000)*0.075+100000*0.1);
System.out.println(sum10);
}
else if(s>1000000){
sum10=(int)((s-1000000)*0.01+(200000)*0.015+(200000)*0.03+(200000)*0.05+(100000)*0.075+100000*0.1);
System.out.println(sum10);
}
解决方案 »
- SWT 的DateTime问题
- iamgeIcon(".\\icons\\picture.jpg")什么意思?图片只能和.java在一个目录中吗?
- linux下 jdk1.4 迁移到 jdk1.5的问题
- 各位大侠们小弟有一事求教
- 如何把这个程序改成鼠标双击事件??
- 大家有没有遇到过没么奇怪的问题?请指教
- 甚樣設計multi-threaded(多執行緒)sever,可否給些例子........好謝....................
- 如何把程序代码和数据库一起加入版本控制?
- 这里到底有没有高手呀,这样一个数组问题都没有人能解决??请真真的高手看看!!
- 这句话Collections is a class, Collection is an interface怎么理解?
- 问:有没有关于背景颜色羽化效果的方法
- 请问如何读取并设置主线程的优先级
import java.util.ArrayList;class TaxLimit {
private double percent;
private double lowerLimit;
private double upperLimit;
public TaxLimit(double percent, double lowerLimit, double upperLimit) {
this.percent = percent;
this.lowerLimit = lowerLimit;
this.upperLimit = upperLimit;
}
public double getLowerLimit() {
return lowerLimit;
}
public double getUpperLimit() {
return upperLimit;
}
public double getPercent() {
return percent;
}
public double getLimitInterval() {
return upperLimit - lowerLimit;
}
}public class tax {
public static void main(String[] args) {
double money = 200000;
double remain = money;
double sum = 0;
ArrayList taxList = new ArrayList();
taxList.add(new TaxLimit(0.05, 0, 100000));
taxList.add(new TaxLimit(0.1, 100000, 200000));
for(int i = 0; i < taxList.size(); i++) {
TaxLimit currentTax = (TaxLimit)taxList.get(i);
if(remain > currentTax.getLimitInterval()) {
sum += currentTax.getLimitInterval() * currentTax.getPercent();
remain = remain - currentTax.getLimitInterval();
continue;
}
else {
sum += remain * currentTax.getPercent();
break;
}
}
System.out.println(sum);
}
}
{
int sum;
int n =(int)((I - 1)/100000);
switch(n)
{
case0:{
sum = (int)(I * 0.1);
break;
}
case1:{
sum = (int)((s-100000)*0.075+(100000*0.1));
break;
}
case2:
case3:{
sum = (int)((s-200000)*0.05+100000*0.075+100000*0.1);
break;
}
case4:
case5:{
sum = (int)((s-400000)*0.03+(200000)*0.05+(100000)*0.075+100000*0.1);
break;
}
case6:
case7:
case8:
case9:{
sum = (int)((s-600000)*0.015+(200000)*0.03+(200000)*0.05+(100000)*0.075+100000*0.1);
break;
}
default:
sum = (int)((s-1000000)*0.01+(200000)*0.015+(200000)*0.03+(200000)*0.05+(100000)*0.075+100000*0.1);
}
return sum;
}