算法_数学问题_Question1_计算个人所得税(java实现)

这篇文章讲述的是算法初级部分的算法数学问题计算个人所得税问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的《c语言趣味编程1000例》,如有错误或者不当之处,还望各位大神批评指正。

问题描述

  • 编写一个程序计算个人所得税,要求输入金额后能够输出应缴的个人所得税,个人所得税计算办法如下:
    起征点为1500
    不超过1500元的部分,征收3%
    超过1500~4500元的部分,征收10%
    超过4500~9000元的部分,征收20%
    超过9000~35000元的部分,征收25%
    超过35000~55000元的部分,征收30%
    超过55000~80000元的部分,征收35%
    超过80000元以上的部分,征收45%

算法分析

分别计算超过的部分乘及对应分段的税率然后累加起来,如一个人的工资为5500,在分段4500~9000的部分(5500-4500)*0.2,同时还要加上前一个分段的税钱1500*0.03。需使用if-else来判断工资在哪个范围,再对应计算。

代码实现

public class Q1_SalaryTax {
    /**
     * 问题描述:编写一个程序计算个人所得税,要求输入金额后能够输出应缴的个人所
     *           得税,个人所得税计算办法如下:
     *                - 起征点为1500
     *                - 不超过1500元的部分,征收3%
     *                - 超过1500~4500元的部分,征收10%
     *                - 超过4500~9000元的部分,征收20%
     *                - 超过9000~35000元的部分,征收25%
     *                - 超过35000~55000元的部分,征收30%
     *                - 超过55000~80000元的部分,征收35%
     *                - 超过80000元以上的部分,征收45%
     *     
     * 算法分析:超过的部分乘及对应的税率然后累加起来,
     *           如一个人的工资为5500,在分段4500~9000的部分(5500-4500)*0.2,
     *           同时还要加上前一个分段的税钱1500*0.03。
     *           需使用if-else来判断工资在哪个范围,再对应计算。
     */
    public static void main(String[] args) {
        double salary = 100000 ;                        //输入工资
        double taxsal = salary-3500.0 ;             //计算起证部分

        double culsal=0 ;                           //定义一个变量用于保存计算结果

        if(taxsal <= 0){                                //若工资不超过3500
            culsal = 0 ;
        }else if(taxsal <= 1500){                   //超过部分小于1500
            culsal = (taxsal-0)*0.03f ; 
        }else if(taxsal>1500 && taxsal<04500){      //超过1500~4500
            culsal = (taxsal-1500)*0.10f 
                        + (1500-0)*0.03f ;
        }else if(taxsal>=4500 && taxsal<9000){      //超过4500~9000
            culsal = (taxsal-4500.0)*0.20f 
                        + (4500-1500)*0.10f 
                        + (1500-0)*0.03f ;
        }else if(taxsal>=9000 && taxsal<35000){     //超过9000~35000
            culsal = (taxsal-9000.0)*0.25f 
                        + (9000-4500)*0.20f 
                        + (4500-1500)*0.10f 
                        + (1500-0)*0.03f ;
        }else if(taxsal>=35000 && taxsal<55000){    //超过35000~55000
            culsal = (taxsal-35000.0)*0.30f 
                        + (35000-9000)*0.25f 
                        + (9000-4500)*0.20f 
                        + (4500-1500)*0.10f 
                        + (1500-0)*0.03f ;
        }else if(taxsal>=55000 && taxsal<80000){    //超过55000~80000    
            culsal = (taxsal-55000.0)*0.35f 
                        + (55000-35000)*0.30f 
                        + (35000-9000)*0.25f 
                        + (9000-4500)*0.20f 
                        + (4500-1500)*0.10f 
                        + (1500-0)*0.03f ;
        }else if(taxsal>=80000){                    //超过80000以上
            culsal = (taxsal-80000.0)*0.45f 
                        + (80000-55000)*0.35f 
                        + (55000-35000)*0.30f 
                        + (35000-9000)*0.25f 
                        + (9000-4500)*0.20f 
                        + (4500-1500)*0.10f 
                        + (1500-0)*0.03f ;
        }

        System.out.println("工资为:"+salary+" 应缴所得税:"+culsal);
    }
}

样例输出

工资为:100000.0 应缴所得税:29919.999803304672
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值