纳税计算——案例2_7
题目
在我国,个人所得税是基于纳税人的情况和应征收人计算的。纳税人情况共分为三种:单身纳税人、已婚纳税人和家庭纳税人。另外,对于不同情况的纳税人,其税率是分档计算的,我国2008年的个人所得税税率如下表所示。
税率 | 单身纳税人 | 已婚纳税人 | 家庭纳税人 |
---|---|---|---|
10% | 低于等于6000元 | 低于等于12000元 | 低于等于10000元 |
15% | 6001~27950 元 | 12001~46700元 | 10001~37450元 |
27% | 27951~67700元 | 46701~112850元 | 37451~96700元 |
30% | 67701~141250元 | 112851~171950元 | 96701~156600 元 |
35% | 141251元及以上 | 171951元及以上 | 156601元及以上 |
思路
我们首先判断三类人,然后再根据不同的类型计算。这里推荐将判断、计算分成不同的方法。
- 判断:
直接用if-else进行判断,判断后进入不同的方法。
public static void judge(){ //判断家庭类型
if (status == 1)
ans1();
else if(status==2)
ans2();
else
ans3();
}
-
计算:
计算其实特别简单,就是一道初中的数学题,这里不再过多赘述。注意要确定好税率的范围,也是用if-else。 -
使用多个方法:
我们一般不喜欢把所有代码全塞到main方法里而是按功能拆分成不同方法,详细见CSDN博客:类、方法和对象
本题答案&代码
import java.util.Scanner;
import javax.lang.model.util.ElementScanner6;
public class Example2_7 {
private static int status=0;
private static double tax=0.0;
private static double income = 0;
public static void data() {
System.out.println("请输入纳税人的类型:1-单身,2-已婚,3-家庭。");
Scanner inStatus = new Scanner(System.in);
status = inStatus.nextInt(); //输入纳税人的类型
System.out.println("请输你的可纳税收入:");
Scanner inIncome = new Scanner(System.in);
income = inStatus.nextDouble(); //输入收入
judge();
}
public static void judge(){ //判断家庭类型
if (status == 1)
ans1();
else if(status==2)
ans2();
else
ans3();
}
public static void ans1() { //单身
if (income <= 6000)
tax = income * 0.1;
else if (income <= 27950)
tax = 6000 * 0.1 + (income - 6000) * 0.15;
else if (income <= 67700)
tax = 6000 * 0.1 + (27950 - 6000) * 0.15 + (income - 27950) * 0.27;
else if (income <= 141250)
tax = 6000 * 0.1 + (27950 - 6000) * 0.15 + (67700 - 27950) * 0.27 + (income - 67700) * 0.3;
else
tax = 6000 * 0.1 + (27950 - 6000) * 0.15 + (67700 - 27950) * 0.27 + (141250 - 67700) * 0.3
+ (income - 141250) * 0.35;
}
public static void ans2() { //已婚
if (income <= 12000)
tax = income * 0.1;
else if (income <= 46700)
tax = 12000 * 0.1 + (income - 12000) * 0.15;
else if (income <= 112850)
tax = 12000 * 0.1 + (46700 - 12000) * 0.15 + (income - 46700) * 0.27;
else if (income <= 171950)
tax = 12000 * 0.1 + (46700 - 12000) * 0.15 + (112850 - 46700) * 0.27 + (income - 112850) * 0.3;
else
tax = 12000 * 0.1 + (46700 - 12000) * 0.15 + (171950 - 46700) * 0.27 + (171951 - 171950) * 0.3
+ (income - 171950);
}
public static void ans3() { //家庭
if(income<=10000)
tax = income * 0.1;
else if(income<=37450)
tax=1000*0.1+(income-10000)*0.15;
else if(income<=96700)
tax = 1000 * 0.1 + (37450 - 10000) * 0.15 + (income - 37450) * 0.27;
else if(income<=15600)
tax = 1000 * 0.1 + (37450 - 10000) * 0.15 + (96700 - 37450) * 0.27 + (income - 96700)*0.3;
else
tax = 1000 * 0.1 + (37450 - 10000) * 0.15 + (96700 - 37450) * 0.27 + (15600 - 96700) * 0.3
+ (income - 15600) * 0.35;
}
public static void main(String[] args) {
Example2_7 input = new Example2_7();
input.data();
System.out.println("纳税人需要缴的税额为:"+tax+"元人民币");
}
}