基于“计算税率”的题解

原题:

美国联邦个人所得税是根据申报情况和应纳税所得额计算的。有四种申报情况:单身申报、已婚联合申报、已婚单独申报、户主申报。税率每年都不一样。下表即为假定税率计算方法,例如,某人单身申报,应纳税收入为10,000,则计算方法为:8,350的部分按10%计税,剩余的1,650的部分按158,350×10%+1,650×151,082.5。

你要写一个计算个人所得税的程序。程序应该首先输入申报状态和应纳税所得额并计算税款。其中,输入申报状态用整型数表示,0表示单身申报,1表示已婚联合申报,2表示已婚单独申报,3表示户主申报。应纳税所得金额用实型数表示。下表为具体的税率。

计算税率1.jpg

输入格式:

请在一行中输入申报情况和应纳税收入金额,其中,输入申报情况用整型数表示,正确取值范围为0~3;应纳税金额为实型数,正确取值范围为0~+∞。

输出格式:

(1)当输入数据合法时,输出应纳税金额,实型数;
(2)当输入数据非法时,输出字符串“Wrong Format”

输入样例1:

在这里给出一组输入。例如:

0 0

输出样例1:

在这里给出相应的输出。例如:

0.00

输入样例2:

在这里给出一组输入。例如:

0 100000

输出样例2:

在这里给出相应的输出。例如:

21720.00

输入样例3:

在这里给出一组输入。例如:

5 100000

输出样例3:

在这里给出相应的输出。例如:

Wrong Format

 

题解:

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner in =new Scanner(System.in);
        int type=in.nextInt();
        double money=in.nextDouble();
        if(type<0||type>3||money<0){
            System.out.printf("Wrong Format");
            return;
        }
        int[] a= null;
        double[] e={0.1,0.15,0.25,0.28,0.33,0.35};
        switch(type){
            case 0:
                a= new int[]{8350,33950,82250,171550,372950};
                break;
            case 1:
                a= new int[]{16700,67900,137050,208850,372950};
                break;
            case 2:
                a= new int[]{8350,33950,68525,104425,186475};
                break;
            case 3:
                a= new int[]{11950,45500,117450,190200,372950};
                break;
        }
        double sum=0;
        if(money<=a[0]){
            sum=money*e[0];
        }else if(money>=a[0]+1&&money<=a[1]){
            sum=a[0]*e[0]+(money-a[0])*e[1];
        }else if(money>=a[1]+1&&money<=a[2]){
            sum=a[0]*e[0]+(a[1]-a[0])*e[1]+(money-a[1])*e[2];
        }else if(money>=a[2]+1&&money<=a[3]){
            sum=a[0]*e[0]+(a[1]-a[0])*e[1]+(a[2]-a[1])*e[2]+(money-a[2])*e[3];
        }else if(money>=a[3]+1&&money<=a[4]){
            sum=a[0]*e[0]+(a[1]-a[0])*e[1]+(a[2]-a[1])*e[2]+(a[3]-a[2])*e[3]+(money-a[3])*e[4];
        }else{
            sum=a[0]*e[0]+(a[1]-a[0])*e[1]+(a[2]-a[1])*e[2]+(a[3]-a[2])*e[3]+(a[4]-a[3])*e[4]+(money-a[4])*e[5];
        }
        System.out.printf("%.2f",sum);
    }
}

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值