原题:
美国联邦个人所得税是根据申报情况和应纳税所得额计算的。有四种申报情况:单身申报、已婚联合申报、已婚单独申报、户主申报。税率每年都不一样。下表即为假定税率计算方法,例如,某人单身申报,应纳税收入为10,000,则计算方法为:8,350的部分按10%计税,剩余的1,650的部分按158,350×10%+1,650×151,082.5。
你要写一个计算个人所得税的程序。程序应该首先输入申报状态和应纳税所得额并计算税款。其中,输入申报状态用整型数表示,0表示单身申报,1表示已婚联合申报,2表示已婚单独申报,3表示户主申报。应纳税所得金额用实型数表示。下表为具体的税率。
输入格式:
请在一行中输入申报情况和应纳税收入金额,其中,输入申报情况用整型数表示,正确取值范围为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);
}
}