感受Java的魅力——基于Java二维数组和if语句编制的税后工资计算方法

这篇博客分享了作者作为Java初学者,如何利用二维数组和if语句根据新个人所得税政策计算税后工资。文章探讨了在解决累加型数据计算问题时面临的挑战,提出了两种解决方案:一种是常规的if语句计算,另一种是通过优化的taxCal2()方法,利用数组和循环提高代码的可读性和可扩展性。作者期待与读者交流互动,共同学习进步。
摘要由CSDN通过智能技术生成

1. 致谢

这是我的第一篇CSDN博客。作为Java小白,首先要感谢达内程序媛泡泡老师的带领:幽默、风趣而又通俗易懂,能够把Java这么一门非常理性的课程讲的这么生动,非常让人敬佩,这让我的Java学习有了一个很好的开始。

2. 分享的内容与意义

本次Java实践,借助新个人所得税政策中的薪资计算案例,理解如何使用二维数组、If语句和for循环解决累加型数据计算问题。欢迎各位前辈指导,并愿与伙伴们共同进步。

3. 本次编程实践要解决的问题

问题名称:求税后工资问题

2019年1月1日起,国家推出新的个人所得税政策,起征点上调值5000元。也就是说税前工资扣除三险一金(三险一金数额假设是税前工资的10%)后如果不足5000元,则不交税。如果大于5000元,那么大于5000元的部分按梯度交税,具体梯度比例如下:
 第1档:0 ~ 3000元的部分,交税3%
 第2档:3000 ~ 12000元的部分,交税10%
 第3档:12000 ~ 25000的部分,交税20%
 第4档:25000 ~ 35000的部分,交税25%
 第5档:35000 ~ 55000的部分,交税30%
 第6档:55000 ~ 80000的部分,交税35%
 第7档:超过80000的部分,交税45%
比如:小蓝入职一家企业后,税前工资是18000,则他每月该交个税的部分是18000-1800-5000=11200元,个税缴纳数额是3000×3%+8200×10%=910元。税后工资15290元。
请完成一个个税计算程序,在用户输入税前工资后,计算出他对应的纳税数额,以及税后工资为多少?

4. 实现过程中的挑战与对策

这个问题的解决通常会使用第一种方式,如下文的taxCal1(),通过if语句和单纯的数字运算方式来实现:简单也相对容易实现。但缺点是可延展性弱,如果再增加工资档位,需要另外增加冗长的代码。另外,内部实现依赖手工计算,代码可读性弱。

有哪些机会可以进一步优化程序,以简化我们的工作,减少对手工计算的依赖?待解决的问题中呈现了几个特征:

  • 6个档位的工资有着共同的属性,比如都有最低工资、最高工资和税率,所以for循环会有机会
  • 6个档位的计算都是在前面的基础上累加起来的,依然通过for循环解决和If判断语句
  • 6个档位的工资差距不一样,所以不能是单纯的循环,可能要用到数组。

上述特征带来了构建taxCal2()的计算机会,详情见如下实现过程。

5 实现过程

如下代码提供了2种计算方式,第一种是常见的计算方式taxCal1(),第二种是基于问题特征构建的taxCal2().

package ZVC.Varaible;

import java.util.Scanner;
public class TestTax {
   
    public static void main(String[] args) {
   
        System.out.println("请输入您的税前工资(元):");
        double s = new Scanner(System.in).nextDouble();
        System.out.println("根据第1种计算方式:");
        taxCal1(s);
        System.out.println("根据第2种计算方式:");
        taxCal2(s);
    }
    public static void taxCal1(double s){
   
        if((s*0.9-5000) < 0){
   
            System.out.
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值