FISHY__ 2020-04-04 13:41 采纳率: 0%
浏览 209

eclipse中的csv后缀文件的应用?

编写一个计算年度个人所得税的方法,该方法的参数为年收入。
设年收入 i 为整数 (元),月收入 k = i/12;
个税计算公式如下:
当k∈[0,3000]:
0.03*i
当k∈(3000,12000]:
0.1*i-12*210
当k∈(12000,25000]:
0.2*i-12*1410
当k∈(25000,35000]:
0.25*i-12*2660
当k∈(35000,55000]:
0.3*i-12*4410
当k∈(55000,80000]:
0.35*i-12*7160
当k∈(80000,):
0.45*i-12*15160

实现要求:
1 当输入i<0的时候,应当抛出异常 IllegalArgumentException ,异常消息为"年收入必须大于等于0“
2 个税精确到分
测试要求:
1 用JUnit测试
2 测试i<0时,是否抛出规定的异常
3 使用参数化测试,并使用下面的数据,input是输入(年收入),expceted是期望的计算结果。
input
expected
35988
1079.64
36000
1080
36012
1081.2
143988
11878.8
144000
11880
144012
11882.4
299988
43077.6
300000
43080
300012
43083
419988
73077
420000
73080
420012
73083.6
659988
145076.4
660000
145080
660012
145084.2
959988
250075.8
960000
250080
960012
250085.4

提示:
1 测试数据可以复制到excel中,并另存为 csv文件。
2 断言 double是否相等,需要断言方法
.Assert.assertEquals(double expected, double actual, double delta)
其中期望值和实际值的偏差必须小于delta,请根据题目的精度要求选择delta

  • 写回答

1条回答 默认 最新

  • FLLFFFL 2023-07-12 10:32
    关注
    public class TaxCalculator {
        public static double calculateIncomeTax(double annualIncome) {
            if (annualIncome < 0) {
                throw new IllegalArgumentException("年收入必须大于等于0");
            }
            
            double monthlyIncome = annualIncome / 12;
            double tax = 0;
            
            if (monthlyIncome <= 3000) {
                tax = 0.03 * annualIncome;
            } else if (monthlyIncome <= 12000) {
                tax = 0.1 * annualIncome - 12 * 210;
            } else if (monthlyIncome <= 25000) {
                tax = 0.2 * annualIncome - 12 * 1410;
            } else if (monthlyIncome <= 35000) {
                tax = 0.25 * annualIncome - 12 * 2660;
            } else if (monthlyIncome <= 55000) {
                tax = 0.3 * annualIncome - 12 * 4410;
            } else if (monthlyIncome <= 80000) {
                tax = 0.35 * annualIncome - 12 * 7160;
            } else {
                tax = 0.45 * annualIncome - 12 * 15160;
            }
            
            return Math.round(tax * 100) / 100.0; // 精确到分
        }
    }
    
    import org.junit.Assert;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.junit.runners.Parameterized;
    
    import java.util.Arrays;
    import java.util.Collection;
    
    @RunWith(Parameterized.class)
    public class TaxCalculatorTest {
        private double input;
        private double expected;
    
        public TaxCalculatorTest(double input, double expected) {
            this.input = input;
            this.expected = expected;
        }
    
    

    完后下面的是JUnit测试

    
       @Parameterized.Parameters
        public static Collection<Object[]> data() {
            return Arrays.asList(new Object[][]{
                    {35988, 1079.64},
                    {36000, 1080.0},
                    {36012, 1081.2},
                    {143988, 11878.8},
                    {144000, 11880.0},
                    {144012, 11882.4},
                    {299988, 43077.6},
                    {300000, 43080.0},
                    {300012, 43083.0},
                    {419988, 73077.0},
                    {420000, 73080.0},
                    {420012, 73083.6},
                    {659988, 145076.4},
                    {660000, 145080.0},
                    {660012, 145084.2},
                    {959988, 250075.8},
                    {960000, 250080.0},
                    {960012, 250085.4}
            });
        }
    
        @Test
        public void testCalculateIncomeTax() {
            double actual = TaxCalculator.calculateIncomeTax(input);
            Assert.assertEquals(expected, actual, 0.01); // 设置delta为0.01,允许误差为0.01
        }
    }
    
    评论

报告相同问题?

问题事件

  • 提问应符合社区要求 7月11日

悬赏问题

  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥18 c语言期中复习题(求解)
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 求一个十多年前的国产符号计算软件(MMP)+用户手册
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢
  • ¥15 vxworks交叉编译gcc报错error: missing binary operator before token "("
  • ¥15 JSzip压缩文件时如何设置解压缩密码