java:根据利润表计算奖金所得

 

 

代码实现:

public class Hello {
	public static void main(String srgs[]) {
            Lirun(100);
	    Lirun2(100);
        }

        public static double Lirun(double lirun) {
		/**
		 * 输入lirun的单位为万元
		 */
		double sum = 0;
		if (lirun <= 10) {
			sum = lirun * 0.1;

		} else if (lirun > 10 && lirun <= 20) {
			sum = (lirun - 10) * 0.075 + 10 * 0.1;
		} else if (lirun > 20 && lirun <= 40) {
			sum = (lirun - 20) * 0.05 + (20 - 10) * 0.075 + 10 * 0.1;
		} else if (lirun > 40 && lirun <= 60) {
			sum = (lirun - 40) * 0.03 + (40 - 20) * 0.05 + (20 - 10) * 0.075 + 10 * 0.1;
		} else if (lirun > 60 && lirun <= 100) {
			sum = (lirun - 60) * 0.015 + (60 - 40) * 0.03 + (40 - 20) * 0.05 + (20 - 10) * 0.075 + 10 * 0.1;
		} else if (lirun > 100) {
			sum = (lirun - 100) * 0.001 + (100 - 60) * 0.015 + (60 - 40) * 0.03 + (40 - 20) * 0.05 + (20 - 10) * 0.075
					+ 10 * 0.1;
		}
		System.out.println("当前利润为:" + lirun + "万元,应得奖金为:" + sum + "万元!");
		return sum;
	}

	public static double Lirun2(double lirun) {
		/**
		 * 输入lirun的单位为万元 定义两个double类型的数组,分别存入利润值分段和对应的奖金比例。
		 */
		double sum = 0;
		double tmp = lirun; // 定义一个临时变量
		boolean flag = false; // 定义一个flag,用来标记是否已经找到利润值表的对应元素,然后根据这个flag进行下一个阶段的奖金值计算
		double[] lirunArr = { 10, 20, 40, 60, 100 };
		double[] Arrnum = { 0.1, 0.075, 0.05, 0.03, 0.015 };
		for (int i = lirunArr.length - 1; i >= 0; i--) { // 遍历利润值
			if (tmp > lirunArr[i]) { // 判断当前的临时变量(输入的利润值)是否大于利润值表的最大元素,目的找到输入的利润值的取值范围
				tmp = tmp - lirunArr[i];
				sum += tmp * Arrnum[i];
				flag = true;
			} else if (flag && i >= 1) { // 按照利润值表中各阶段对应的奖金比例计算奖金。
				tmp = lirunArr[i] - lirunArr[i - 1];
				sum += tmp * Arrnum[i];
			} else if (i == 0) { // 理论上需要定义数组时输入一个0的元素,但是如果不定义,那就得利用i==0的特殊情况进行区别处理,以处理第二阶段数组越界的情况。
				tmp = lirunArr[i];
				sum += tmp * Arrnum[i];
			}

//			System.out.println("i=" + i + ";tmp=" + tmp + ";sum=" + sum);
		}
		System.out.println("当前利润为:" + lirun + "万元,应得奖金为:" + sum + "万元!");
		return sum;
	}
}

  

 

posted @ 2019-04-01 10:24  南非波波  阅读(679)  评论(0编辑  收藏  举报