员工底薪为500,前三年底薪按每年8%增长,以后每年按(8-(工龄-3))% 增长,当增长率到2%时维持该比例增长,当底薪到达1000时不再增长,求输入工龄计算该工龄时底薪为多少?还有为何: double a=7/100;为何值为0?

解决方案 »

  1.   

    double a=7/100;改成 double a = 7.00/100.00
      

  2.   

    double a=7/100  7/100 返回的是int类型,所以结果为0,然后再转成double
      

  3.   


    import java.util.Scanner;
    public class Main {

    public static double start = 500;//开始的底薪

    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("请输入工龄:");
    int age = input.nextInt();
    if(age < 0) {
    System.out.println("工龄不能小于0!");
    System.exit(0);
    }
    calcSalary(age);
    }

    private static void calcSalary(int age) {
    double salary = 0;
    if(age <= 3) {//前三年的底薪计算
    salary = start * Math.pow((1 + 0.08),age);
    //判断底薪是否大于1000,若大于1000,则设置为1000
    if(salary > 1000)
    salary = 1000;
    } else if(age <= 9){//第9年增长率成2%,所以这里是计算4-9年的底薪
    //计算第四年开始时的底薪start
    salary = start * Math.pow((1 + 0.08),3);
    //计算第四年开始时的底薪end
    //计算4-9年的底薪,包括第4年和第9年
    for(int i=4; i<= age; i++) {
    salary = salary * (1 + (8 - (i - 3)) / 100.0);
    }
    //判断底薪是否大于1000,若大于1000,则设置为1000
    if(salary > 1000)
    salary = 1000;
    } else {//计算10年及以上的底薪
    //计算第十年开始时的底薪start
    salary = start * Math.pow((1 + 0.08),3);
    for(int i=4; i<= 9; i++) {
    salary = salary * (1 + (8 - (i - 3)) / 100.0);
    }
    //计算第十年开始时的底薪end
    //计算10年及以上的底薪
    salary = salary * Math.pow((1 + 0.02), age - 9);
    //判断底薪是否大于1000,若大于1000,则设置为1000
    if(salary > 1000)
    salary = 1000;
    }
    System.out.println("第" + age + "年的底薪是:" + salary);
    }
    }