(JAVA)工资计算-201612-2

来源:互联网 发布:java pack 方法 编辑:程序博客网 时间:2024/06/01 09:16

问题描述

  小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算:
  1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税,令A=S-3500元;
  2) A中不超过1500元的部分,税率3%;
  3) A中超过1500元未超过4500元的部分,税率10%;
  4) A中超过4500元未超过9000元的部分,税率20%;
  5) A中超过9000元未超过35000元的部分,税率25%;
  6) A中超过35000元未超过55000元的部分,税率30%;
  7) A中超过55000元未超过80000元的部分,税率35%;
  8) A中超过80000元的部分,税率45%;
  例如,如果小明的税前工资为10000元,则A=10000-3500=6500元,其中不超过1500元部分应缴税1500×3%=45元,超过1500元不超过4500元部分应缴税(4500-1500)×10%=300元,超过4500元部分应缴税(6500-4500)×20%=400元。总共缴税745元,税后所得为9255元。
  已知小明这个月税后所得为T元,请问他的税前工资S是多少元。
输入格式
  输入的第一行包含一个整数T,表示小明的税后所得。所有评测数据保证小明的税前工资为一个整百的数。
输出格式
  输出一个整数S,表示小明的税前工资。
样例输入
9255
样例输出
10000
评测用例规模与约定
  对于所有评测用例,1 ≤ T ≤ 100000。


代码

备注:写范围的时候,是减去税收后的范围才是准确的

第一次做代码(100分):

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in); int n =  sc.nextInt();  int wage = n; int wageAfter = n - 3500; int wageBefore = 0;  //交税之后的工资,还是满足税的要求范围 int x1 = 0; int x2 = 0; int x3 = 0; int x4 = 0; int x5 = 0; int x6 = 0;  //3500元以上的部分        计算个人所得税 if(wageAfter > 0){  x1 = 1500/100 *3;       //45 x2 = (4500 - 1500)/10; //300     x3 = (9000 - 4500)/100 *20; //900     x4 = (35000 - 9000)/100 *25;//6500     x5 = (55000 - 35000)/100 *30;//6000     x6 = (80000 - 55000)/100 *35;//8750   //A中不超过1500元的部分,税率3%; 1500:1455 if(wageAfter <= 1455){ wage =( wageAfter /(100 - 3)*100 ) + 3500;  // wageAfter / 0.97  }  //A中超过1500元未超过4500元的部分,税率10%;   4500: 4155 if(wageAfter > 1455 && wageAfter <= 4155){ wageBefore = wageAfter + x1;     wage = 1500+((wageBefore - 1500)/9*10) +3500;   //   除以 0.9  得到(超过1500元未超过4500元的部分)的税  (wageAfter - 1500)/9      }   //A中超过4500元未超过9000元的部分,税率20%;  9000 : 7755  if(wageAfter > 4155 && wageAfter <= 7755){ wageBefore = wageAfter + x1 + x2;     wage = 4500+((wageBefore - 4500)/8*10) +3500;         }   //A中超过9000元未超过35000元的部分,税率25%;  35000: 27255  if(wageAfter > 7755 && wageAfter <= 27255){ wageBefore = wageAfter + x1 + x2 + x3;      wage = 9000+((wageBefore - 9000)/75*100) +3500;          }    // A中超过35000元未超过55000元的部分,税率30%     55000 : 41255   if(wageAfter > 27255 && wageAfter <= 41255){  wageBefore = wageAfter + x1 + x2 + x3+x4;         wage = 35000+((wageBefore - 35000)/7*10) +3500;           }    // A中超过55000元未超过80000元的部分,税率35%   80000 : 58730 if(wageAfter > 41255 && wageAfter <= 58730){    wageBefore = wageAfter + x1 + x2 + x3+x4+x5;             wage = 55000+((wageBefore - 55000)/65*100) +3500;           }    // A中超过80000元的部分,税率45%  if(wageAfter >  58730){     wageBefore = wageAfter + x1 + x2 + x3 + x4 + x5 + x6;       wage = 80000+((wageBefore - 80000)/55*100) +3500;           } }System.out.println(wage);}}


第二次做代码(100分):

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int t = sc.nextInt();double wage = t;double tax = 0;// 各阶段税收double tax1 = 1500*0.03;double tax2 = (4500-1500)*0.1;double tax3 = (9000-4500)*0.2;double tax4 = (35000-9000)*0.25;double tax5 = (55000-35000)*0.3;double tax6 = (80000-55000)*0.35;//减税后的  最多的钱double t1 =5000-tax1;double t2 = 4500 + 3500-tax2-tax1;double t3 = 9000+3500-tax1-tax2-tax3;double t4 = 35000 + 3500 -tax1-tax2-tax3-tax4;double t5 = 55000 + 3500 -tax1-tax2-tax3-tax4-tax5;double t6 = 80000 + 3500 -tax1-tax2-tax3-tax4-tax5-tax6;// 不超过1500元的部分,税率3%if( t > 3500 && t <= t1){tax = (t - 3500)/(1-0.03);wage = tax + 3500;}//超过1500元未超过4500元的部分,税率10%else if( t > t1 && t <= t2){tax =( t-3500-1500+tax1)/(1-0.1);    wage = tax + 1500 +3500 ;}// 超过4500元未超过9000元的部分,税率20%else  if(t > t2 && t <= t3){tax = (t-3500-4500+tax1+tax2)/(1-0.2);wage = tax + 4500 +3500;}// 超过9000元未超过35000元的部分,税率25%else  if(t > t3 && t <= t4){tax = (t-3500-9000+tax1+tax2+tax3)/(1-0.25);wage = tax + 9000 +3500;}// 超过35000元未超过55000元的部分,税率30%else if(t > t4 && t <= t5){tax = (t-3500-35000+tax1+tax2+tax3+tax4)/(1-0.3);wage = tax + 35000 +3500;}// 超过55000元未超过80000元的部分,税率35%else if(t > t5 && t <= t6){tax = (t-3500-55000+tax1+tax2+tax3+tax4+tax5)/(1-0.35);wage = tax + 55000 +3500;}// 超过80000元的部分,税率45%else if(t > t6){tax = (t-3500-80000+tax1+tax2+tax3+tax4+tax5+tax6)/(1-0.45);wage = tax + 80000 +3500;}int result = (int)wage;System.out.println(result);}}





原创粉丝点击