题目的主要信息:

  • 个人所得税的计算公式为:×应纳税额 =(工资薪金所得-扣除数)× 适用税率-速算扣除数
  • 工资低于3500时不需要缴纳个人所得税
  • 其中,扣除数为3500元,适用税率以及速算扣除数如下表所示: alt
  • =全月应纳税所得额 = 工资薪金所得-扣除数
  • 请你补全代码中的 Employee 类,新建三个 Employee 对象,姓名分别是小明,小军和小红,他们的工资分别为 2500.0,8000.0,100000.0
  • 并将他们按顺序存入一个集合中,遍历集合并计算他们应缴纳的个人所得税
  • 个人所得税为 double 类型,保留一位小数

具体做法:

这道题看起来很复杂,但是其实只需要分几步走。

  1. 新建三个Employee类的实例,对其分别赋予初始值,然后将它们全部add进集合中。

  2. 遍历集合,将取出来的值计算全月应纳税所得额。

  3. 根据全月纳纳税所得额所在的区间计算应纳税额,这里需要优先判断是否工资会小于3500。

  4. 最后格式化输出。

alt

import java.util.*;

public class Main {
    public static void main(String[] args) {
        List<Employee> employees = new ArrayList<>();
        //信息加入集合中
        employees.add(new Employee("小明", 2500));
        employees.add(new Employee("小军", 8000));
        employees.add(new Employee("小红", 100000));
        for(Employee e : employees){ //遍历这个集合
            double tax = 0;
            double income = e.getSalary() - 3500;  //工资-扣除数=全月应纳税所得额
            if(income <= 0) //收入少于3500,不用纳税
                tax = 0;
              //找到所属区间
            else if(income <= 1500)
                tax = income * 0.03;
            else if(income <= 4500)
                tax = income * 0.1 - 105;
            else if(income <= 9000)
                tax = income * 0.2 - 555;
            else if(income <= 35000)
                tax = income * 0.25 - 1005;
            else if(income <= 55000)
                tax = income * 0.3  - 2755;
            else if(income <= 80000)
                tax = income * 0.35 - 5505;
            else
                tax = income * 0.45 - 13505;
             System.out.println(e.getName() + "应该缴纳的个人所得税是:" + String.format("%.1f", tax));
        }
    }
}
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;
    }
}

复杂度分析:

  • 时间复杂度:O(1)O(1),常数时间
  • 空间复杂度:O(1)O(1),常数空间