烟尘最是抚人心 2022-11-01 10:33 采纳率: 100%
浏览 93
已结题

JAVA编写个税计算器(简易),代码繁杂能否优化

问题遇到的现象和发生背景 计算个人所得税。设某人月收入为x元,假设个人所得税征收方法如下:
  当x<=3500时,不需要交税;

  当3500<x≤5000时,应征税为(x-3500)* 3%;

  当5000<x≤8000时,应征税为(x-5000)* 10% + 1500 * 3%;

  当8000<x≤12500时,应征税为(x-8000)* 20% + 3000 * 10% + 1500 * 3%;

  当12500<x≤15000时,应征税为(x-12500)* 25% + 4500 * 20% + 3000 * 10% + 1500 * 3%;

  当15000<x时,应征税为(x-15000)*30% + 2500 * 25% + 4500 * 20% + 3000 * 10% + 1500 * 3%
用代码块功能插入代码,请勿粘贴截图
    import java.util.Scanner;    public class 个人所得税计算器 {
        
        public static void main(String[] args) {
            float shui =0;
            Scanner input =new Scanner(System.in);
            System.out.println("请输入你本月的工资: ");
            int gz= input.nextInt();
            if(gz<=3500)
            {shui=0;System.out.println("你的收入未达到收税标准,不用交税!");}
            else if(3500<gz&&gz<=5000){shui=(float)( (gz-3500)*0.03);}
            else if(gz<=8000){shui= (float) ((gz-5000)*0.1+45);}
            else if(gz<=12500){shui= (float) ((gz-8000)*0.2+345);}
            else if(gz<=15000){shui= (float) ((gz-12500)*0.25+1245);}
            else if(gz>15000){shui= (float) ((gz-15000)*0.3+1870);}
            System.out.println("应收个人所得税为:"+shui);
        }
    }



我的解答思路和尝试过的方法
我想要达到的结果 能否优化 简化代码老哥们,这个感觉有点繁杂,但是我又想不到优化方式
  • 写回答

2条回答 默认 最新

  • Java大魔王 2022-11-01 10:44
    关注

    不想用那么多if else, 那就用三元表达式嵌套

    public static void main(String args[]) {
            float shui =0;
            Scanner input =new Scanner(System.in);
            System.out.println("请输入你本月的工资: ");
            int gz= input.nextInt();
            shui = (gz - 15000) > 0 ? (float) ((gz-15000)*0.3+1870) : 
                    (gz - 12500) > 0 ? (float) ((gz-12500)*0.25+1245) : 
                    ((gz - 8000) > 0) ? (float) ((gz-8000)*0.2+345) : 
                    (gz - 5000) > 0 ? (float) ((gz-5000)*0.1+45) : 
                    (gz - 3500) > 0 ? (float)( (gz-3500)*0.03) : 0;
            System.out.println("应收个人所得税为:"+shui);
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 11月1日