企业发放的奖金根据利润提成。利润(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);
}
解决方案 »
- java中的class类是怎么回事
- 学习java
- 怎么将ArrayList以前相同的字符串处理,只保留最后一个相同的字符串?
- [讨论]如何模拟Rational Rose中Diagram Design
- 怎么在jb6里连接sql2000,我怎么搞不定啊
- 线程!!!如何使线程处于等待状态,直到另一个线程唤起它。
- MouseListener和MouseMotionListener有什么区别吗?
- 请教点击开始-->搜索-->文件和文件夹-->搜索选项-->日期-->介于选择日期的那个框怎么实现的??
- 请问地图网站的一种效果的java实现思想,就是当鼠标点击一个点,这个点的信息就在图上写出
- session
- 问:有没有关于背景颜色羽化效果的方法
- 请问如何读取并设置主线程的优先级
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;
}