FISHY__ 2020-04-04 05:41 采纳率: 0%
浏览 210

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 02:32
    关注
    1. public class TaxCalculator {
    2. public static double calculateIncomeTax(double annualIncome) {
    3. if (annualIncome < 0) {
    4. throw new IllegalArgumentException("年收入必须大于等于0");
    5. }
    6. double monthlyIncome = annualIncome / 12;
    7. double tax = 0;
    8. if (monthlyIncome <= 3000) {
    9. tax = 0.03 * annualIncome;
    10. } else if (monthlyIncome <= 12000) {
    11. tax = 0.1 * annualIncome - 12 * 210;
    12. } else if (monthlyIncome <= 25000) {
    13. tax = 0.2 * annualIncome - 12 * 1410;
    14. } else if (monthlyIncome <= 35000) {
    15. tax = 0.25 * annualIncome - 12 * 2660;
    16. } else if (monthlyIncome <= 55000) {
    17. tax = 0.3 * annualIncome - 12 * 4410;
    18. } else if (monthlyIncome <= 80000) {
    19. tax = 0.35 * annualIncome - 12 * 7160;
    20. } else {
    21. tax = 0.45 * annualIncome - 12 * 15160;
    22. }
    23. return Math.round(tax * 100) / 100.0; // 精确到分
    24. }
    25. }
    26. import org.junit.Assert;
    27. import org.junit.Test;
    28. import org.junit.runner.RunWith;
    29. import org.junit.runners.Parameterized;
    30. import java.util.Arrays;
    31. import java.util.Collection;
    32. @RunWith(Parameterized.class)
    33. public class TaxCalculatorTest {
    34. private double input;
    35. private double expected;
    36. public TaxCalculatorTest(double input, double expected) {
    37. this.input = input;
    38. this.expected = expected;
    39. }

    完后下面的是JUnit测试

    1. @Parameterized.Parameters
    2. public static Collection<Object[]> data() {
    3. return Arrays.asList(new Object[][]{
    4. {35988, 1079.64},
    5. {36000, 1080.0},
    6. {36012, 1081.2},
    7. {143988, 11878.8},
    8. {144000, 11880.0},
    9. {144012, 11882.4},
    10. {299988, 43077.6},
    11. {300000, 43080.0},
    12. {300012, 43083.0},
    13. {419988, 73077.0},
    14. {420000, 73080.0},
    15. {420012, 73083.6},
    16. {659988, 145076.4},
    17. {660000, 145080.0},
    18. {660012, 145084.2},
    19. {959988, 250075.8},
    20. {960000, 250080.0},
    21. {960012, 250085.4}
    22. });
    23. }
    24. @Test
    25. public void testCalculateIncomeTax() {
    26. double actual = TaxCalculator.calculateIncomeTax(input);
    27. Assert.assertEquals(expected, actual, 0.01); // 设置delta为0.01,允许误差为0.01
    28. }
    29. }

    展开全部

    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部