使用Java语言设计编写计算个人所得税的小程序
首先,我们应先了解需求是什么。
需求:
2019年1月1日后,国家将个人所得税的起征点上调至5000元人民币。这也就是说税前工资扣除五险一金(我们假设五险一金占据税前工资的百分之十)后如果不足五千元就不用交税,如果大于五千元,那么超出五千元的部分按照相应的比例和梯度进行缴税。具体比例如下:
0 - 3000元的部分,交税百分之三
3000 - 12000元的部分,交税百分之十
12000 - 25000元的部分,交税百分之二十
25000 - 35000元的部分,交税百分之二十五
35000 - 55000元的部分,交税百分之三十
55000 - 80000元的部分,交税百分之三十五
超过80000元的部分,交税百分之四十五
举个例子:张三入职了一家互联网公司,税前工资为9000元,那么五险一金就是900元,那他每个月应该缴纳个税的部分就是,9000 - 900 - 5000 = 3100 元,需要缴纳的个人所得税就是:3000×3% + 100×10% = 100 元,那他的税后工资就是 8000 元。
要求要实现一个 个人所得税的计算程序,能够让用户输入自己的税前工资,自动计算出应该纳税的数额,并得出税后工资,输出出来。
接下来,我们要进行一定的分析。
分析:
- 我们应该清楚,程序要求我们能够让用户输入税前工资所以先实现输入功能
- 接着要明确哪些部分才属于纳税部分,我们要先计算出五险一金的数额
- 随后用税前工资减去五险一金并与起征点作比较,如果大于五千就按照比例交税,如果小于五千就不用交税
- 输出计算结果即可
下面我们设计一定的步骤:
执行流程:
- 接收税前工资
- 计算五险一金的额度,并得出扣除五险一金后的额度
- 利用if…else分支结构判断够不够纳税标准,并计算出纳税金额和税后工资
- 输出结果程序结束
最后,我们给出代码实现:
相关代码:
...
package com.kxjh.gs;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//接收用户输入的税前工资,这里我定义成整数
int wages = sc.nextInt();
//接着定义一个变量保存五险一金的额度
double insurance = wages * 0.1;
//接着我们定义一个变量保存扣除五险一金后的工资部分
double money = wages - insurance;
//还需要定义一个变量来表示超出5000元的部分
double money1 = money - 5000;
//我们再定义一个变量用来保存纳税金额,初始值为0
double dockwages = 0;
//再定义一个变量保存税后工资,初始值为0;
double afterTaxWages = 0;
//使用if语句判断输入的工资是否大于零,提升程序的健壮性
if (wages >= 0) {
//使用f语句判断扣除五险一金后工资是否达到纳税标准
if (money > 5000) {
//使用if...else if ...else 分支嵌套语句判断纳税的梯度,并计算纳税额度以及税后工资然后输出
if (money1 > 0 && money1 <= 3000) {
dockwages = money1 * 0.03;
afterTaxWages = money - dockwages;
//输出结果
System.out.println("您输入的税前工资为:" + wages);
System.out.println("您的五险一金额度为:" + insurance);
System.out.println("您的纳税金额为:" + dockwages);
System.out.println("您的税后工资为:" + afterTaxWages);
} else if (money1 > 3000 && money1 <= 12000) {
dockwages = (money1 - 3000) * 0.1 + 3000 * 0.03;
afterTaxWages = money - dockwages;
//输出结果
System.out.println("您输入的税前工资为:" + wages);
System.out.println("您的五险一金额度为:" + insurance);
System.out.println("您的纳税金额为:" + dockwages);
System.out.println("您的税后工资为:" + afterTaxWages);
} else if (money1 > 12000 && money1 <= 25000) {
dockwages = (money1 - 12000) * 0.2 + 3000 * 0.03 + 9000 * 0.1;
afterTaxWages = money - dockwages;
//输出结果
System.out.println("您输入的税前工资为:" + wages);
System.out.println("您的五险一金额度为:" + insurance);
System.out.println("您的纳税金额为:" + dockwages);
System.out.println("您的税后工资为:" + afterTaxWages);
} else if (money1 > 25000 && money1 <= 35000) {
dockwages = (money1 - 25000) * 0.25 + 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2;
afterTaxWages = money - dockwages;
//输出结果
System.out.println("您输入的税前工资为:" + wages);
System.out.println("您的五险一金额度为:" + insurance);
System.out.println("您的纳税金额为:" + dockwages);
System.out.println("您的税后工资为:" + afterTaxWages);
} else if (money1 > 35000 && money1 <= 55000) {
dockwages = (money1 - 35000) * 0.3 + 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25;
afterTaxWages = money - dockwages;
//输出结果
System.out.println("您输入的税前工资为:" + wages);
System.out.println("您的五险一金额度为:" + insurance);
System.out.println("您的纳税金额为:" + dockwages);
System.out.println("您的税后工资为:" + afterTaxWages);
} else if (money1 > 55000 && money1 <= 80000) {
dockwages = (money1 - 55000) * 0.35 + 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + 20000 * 0.3;
afterTaxWages = money - dockwages;
//输出结果
System.out.println("您输入的税前工资为:" + wages);
System.out.println("您的五险一金额度为:" + insurance);
System.out.println("您的纳税金额为:" + dockwages);
System.out.println("您的税后工资为:" + afterTaxWages);
} else {
dockwages = (money1 - 80000) * 0.45 + 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + 20000 * 0.3 + 25000 * 0.35;
afterTaxWages = money - dockwages;
//输出结果
System.out.println("您输入的税前工资为:" + wages);
System.out.println("您的五险一金额度为:" + insurance);
System.out.println("您的纳税金额为:" + dockwages);
System.out.println("您的税后工资为:" + afterTaxWages);
}
} else {
//给出提示信息
System.out.println("您的工资扣除五险一金后不足五千,不用缴纳个税!您的税前工资是:" + wages + "元,您的五险一金额度是:" + insurance + "元,您的到手工资应为:" + money + "元。");
}
} else {
//给出提示信息
System.out.println("您输入的工资不大于零,请重新输入!");
}
}
}
...
这样,这个程序就完成了。欢迎留言点赞,热爱编程的Panic~