题意整理。

  • 给定个人所得税的计算公式:应纳税额=(工资薪金所得-扣除数)×适用税率-速算扣除数。
  • 然后给定公式中各个参数,以及实体对应的薪水,计算对应实体的个人所得税。

方法一(模拟)

1.解题思路

  • 首先计算全月应纳税所得额t。
  • 然后按表中所给的范围,分别进行计算。

图解展示: alt

2.代码实现

import java.util.*;

public class Main {
    public static void main(String[] args) {
        List<Employee> employees = new ArrayList<>();

        //将小明、小军、小红加入到集合
        employees.add(new Employee("小明",2500.0));
        employees.add(new Employee("小军",8000.0));
        employees.add(new Employee("小红",100000.0));
        //遍历集合
        for(Employee emp:employees){
            //输出对应的个人所得税
            System.out.println(emp.getName()+"应该缴纳的个人所得税是:"+String.format("%.1f",tax(emp.getSalary())));
        }

    }
    
    //计算个人所得税
    public static double tax(double salary){
        //全月应纳税所得额
        double t=salary-3500;
        //按表中所给的范围,分别进行计算
        if(t<=0){
            //小于0,不需要扣税
            return 0.0;
        }
        //其它情况,按所给公式及表中数据计算
        else if(t>0&&t<=1500){
            return t*0.03-0;
        }
        else if(t>1500&&t<=4500){
            return t*0.10-105;
        }
        else if(t>4500&&t<=9000){
            return t*0.20-555;
        }
        else if(t>9000&&t<=35000){
            return t*0.25-1005;
        }
        else if(t>35000&&t<=55000){
            return t*0.30-2755;
        }
        else if(t>55000&&t<=80000){
            return t*0.35-5505;
        }
        else{
            return t*0.45-13505;
        }
    }
}
class Employee{
    private String name;
    private double salary;
    public Employee(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }
    public String getName() {
        return name;
    }

    public double getSalary() {
        return salary;
    }
}

3.复杂度分析

  • 时间复杂度:只需一次逻辑判断,以及常数次计算,所以时间复杂度为O(1)O(1)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)