计算个人所得税,编程

woodfans 2005-03-16 05:47:29
1.个人所得税是指国家对个人所得额征收的一种税。个人工资薪金所得采用超额累进税率,纳税人所得越高,课税越重。“高收入者多纳税,低收入者少纳税”是个人所得税的显著特点。我国1981年开征个人所得税,且只对外国公民征收;1986年开征城乡个体工商户所得税;1987年开始征收个人收入调节税,是对我国公民征收;1994年上述三税合并为现行个人所得税。个人工资薪金所得税率如下表:
级数 全月应纳税所得额(减去800元后的余额) 税率%
1 不超过500元的部分 5
2 超过500元至2 000元的部分 10
3 超过2000元至5 000元的部分 15
4 超过5 000元至20000元的部分 20
5 超过20000元至40000元的部分 25
6 超过40000元至60000元的部分 30
7 超过60000元至80000元的部分 35
8 超过80000元至100000元的部分 40
9 超过100000元的部分 45
目前,上表中“全月应纳税所得额”是从月工资、薪金收入中减去800元后的余额。例如,某人月工资、薪金收入1320元,减去800元,应纳税所得额为520元,由税率表可知,其中500元税率为5%,另外20元税率为10%,所以此人应缴纳个人所得税:500×5%+20×10%=27元。
试根据上述资料编程计算个人所得税,并根据你的家庭成员的月收入求出每月需要缴纳多少个人所得税。

一道很简单的题目,请给出答案。我已经做过了
...全文
1483 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
禽兽v5 2005-03-17
  • 打赏
  • 举报
回复
一道很简单的题目,请给出答案。我已经做过了
----------
怎么你不先show自己的答案?
woodfans 2005-03-17
  • 打赏
  • 举报
回复
我觉得上面这种写法比较好:)
woodfans 2005-03-17
  • 打赏
  • 举报
回复
晕,上面的一段乱码是注释,重发一下

public class TaxCalculator
{
private static final double RATE[] ={0.05d,0.1d,0.15d,0.2d,0.25d,0.3d,0.35d,0.4d,0.45d};
private static final double SECTION[] = {0d,500d,2000d,5000d,20000d,40000d,60000d,80000d,100000d};
private static final double LOWBOUND = 800d;

public static void main(String[] args)
{
double sectionFullTax[] = new double[9];
sectionFullTax[0] = 0d;
for (int i=1; i<9; i++)
{
sectionFullTax[i] = 0d;
for (int j=1; j<=i; j++)
sectionFullTax[i] += (SECTION[j] - SECTION[j-1]) * RATE[j-1];
}
/*其实sectionFullTax由数组RATE、SECTION决定,是定值,可以不用在程序中算,
提前算好,象RATE、SECTION一样作为常量数组存放。下面才是真正计算应交所得税。*/
double salary = Double.parseDouble(args[0]) - LOWBOUND;
System.out.println("salary : " + salary);
double tax = 0d;
for (int i=8; i>=0; i--)
{
if ((salary - SECTION[i])>0)
{
tax = (salary - SECTION[i]) * RATE[i] + sectionFullTax[i];
break;
}
}
System.out.println("Tax : " + tax);
}
}
woodfans 2005-03-17
  • 打赏
  • 举报
回复
/*
¼ÆËã¸öÈËËùµÃË°
*/
public class TaxCalculator
{
private static final double RATE[] ={0.05d,0.1d,0.15d,0.2d,0.25d,0.3d,0.35d,0.4d,0.45d};
private static final double SECTION[] = {0d,500d,2000d,5000d,20000d,40000d,60000d,80000d,100000d};
private static final double LOWBOUND = 800d;

public static void main(String[] args)
{
double sectionFullTax[] = new double[9];
sectionFullTax[0] = 0d;
for (int i=1; i<9; i++)
{
sectionFullTax[i] = 0d;
for (int j=1; j<=i; j++)
sectionFullTax[i] += (SECTION[j] - SECTION[j-1]) * RATE[j-1];
}

/*ÆäʵsectionFullTaxÓÉÊý×éRATE¡¢SECTION¾ö¶¨£¬ÊǶ¨Öµ£¬¿ÉÒÔ²»ÓÃÔÚ³ÌÐòÖÐË㣬
ÌáÇ°ËãºÃ£¬ÏóRATE¡¢SECTIONÒ»Ñù×÷Ϊ³£Á¿Êý×é´æ·Å¡£ÏÂÃæ²ÅÊÇÕæÕý¼ÆËãÓ¦½»ËùµÃË°¡£*/
double salary = Double.parseDouble(args[0]) - LOWBOUND;
System.out.println("salary : " + salary);
double tax = 0d;
for (int i=8; i>=0; i--)
{
if ((salary - SECTION[i])>0)
{
tax = (salary - SECTION[i]) * RATE[i] + sectionFullTax[i];
break;
}
}
System.out.println("Tax : " + tax);
}
}
Chinatosun 2005-03-17
  • 打赏
  • 举报
回复
mark
love_bailing 2005-03-17
  • 打赏
  • 举报
回复
顶!
loucai 2005-03-17
  • 打赏
  • 举报
回复
mark
halenabc 2005-03-17
  • 打赏
  • 举报
回复
up
foolfish 2005-03-16
  • 打赏
  • 举报
回复
改了下
public class Tax
{
public static final double LOWSALARY=800;
public static final double[][] TAX={
{0,500,0.05},
{500,2000,0.10},
{2000,5000,0.15},
{5000,20000,0.20},
{20000,40000,0.25},
{40000,60000,0.30},
{60000,80000,0.35},
{80000,100000,0.40},
{100000,Double.MAX_VALUE,0.45},
};
private double totalSalary=-1;
private int startIndex=-1;
public Tax(double totalMoney){
this.totalSalary=totalMoney;
}
public double getSalary(){
return totalSalary;
}
public double getTax(){
return getLowTax(getStartIndex())+getDibs();
}
private int getStartIndex(){
if(startIndex==-1){
if(totalSalary-LOWSALARY>0){
for(int i=TAX.length-1;i>=0;i--){
if(totalSalary-LOWSALARY-TAX[i][1]>0){
startIndex = i;
break;
}
}
}
}
return startIndex;
}
private double getDibs(){
if(getStartIndex()!=-1){
return (totalSalary-LOWSALARY-TAX[getStartIndex()+1][0])*TAX[getStartIndex()+1][2];
}
return 0;
}
private double getLowTax(int startIndex){
int lowTax=0;
if(startIndex!=-1){
for(int i=startIndex;i>=0;i--){
lowTax += (TAX[i][1]-TAX[i][0])*TAX[i][2];
}
}
return lowTax;
}

public static void main(String[] args)
{
Tax tax=new Tax(8000);
System.out.println(tax.getTax());
}
}
foolfish 2005-03-16
  • 打赏
  • 举报
回复
写了一个,请各位挑挑毛病 :) 没有注释,勿怪

public class Tax
{
public static final double LOWSALARY=800.0;
public static final double[][] TAX={
{0.0,500.0,0.05},
{500.0,2000.0,0.10},
{2000.0,5000.0,0.15},
{5000.0,20000.0,0.20},
{20000.0,40000.0,0.25},
{40000.0,60000.0,0.30},
{60000.0,80000.0,0.35},
{80000.0,100000.0,0.40},
{100000.0,Double.MAX_VALUE,0.45},
};

private double totalSalary;
public Tax(double totalMoney){
this.totalSalary=totalMoney;
}

public double getSalary(){
return totalSalary;
}
public double getTax(){
return getLowTax(getTopTax())+getDibs();
}

private int getTopTax(){
if(totalSalary-LOWSALARY>0){
for(int i=TAX.length-1;i>=0;i--){
if(totalSalary-LOWSALARY-TAX[i][1]>0){
return i;
}
}
}
return -1;
}
private double getDibs(){
if(getTopTax()!=-1){
return (totalSalary-LOWSALARY-TAX[getTopTax()+1][0])*TAX[getTopTax()+1][2];
}
return 0.0;
}
private double getLowTax(int startIndex){
int lowTax=0;
if(startIndex!=-1){
for(int i=startIndex;i>=0;i--){
lowTax += (TAX[i][1]-TAX[i][0])*TAX[i][2];
}
}
return lowTax;
}

public static void main(String[] args)
{
Tax tax=new Tax(8000);
System.out.println(tax.getTax());
}
}
fuwang 2005-03-16
  • 打赏
  • 举报
回复
我只会用最原始的思路写,抛砖引玉吧
class Tax
{
public static void main(String[] args)
{
System.out.println(getTax(5800));
}
public static double getTax(double sal)
{
double t=0;
double b =sal-800;
if(b<=500)//25
{
t=b*0.05;
return t;
}
else if(b<=2000)//175
{
t=25+(b-500)*0.1;
return t;
}
else if(b<=5000)//625
{
t=175+(b-2000)*0.15;
return t;
}
else if(b<=20000)//3625
{
t=625+(b-5000)*0.2;
return t;
}
else if(b<=40000)//8625
{
t=3625+(b-20000)*0.25;
return t;
}
else if(b<=60000)//14625
{
t=8625+(b-40000)*0.3;
return t;
}
else if(b<=80000)//21625
{
t=14625+(b-60000)*0.35;
return t;
}
else if(b<=100000)//29625
{
t=21625+(b-80000)*0.4;
return t;
}
else
{
t=29625+(b-100000)*0.45;
return t;
}
}
}
cuilichen 2005-03-16
  • 打赏
  • 举报
回复
很简单啊,
mingxuan3000 2005-03-16
  • 打赏
  • 举报
回复
是要源代吗 还是要结果?
redex 2005-03-16
  • 打赏
  • 举报
回复
可以用strategy模式试试看.

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧