Java 我正试图用双重方法打印一张表,但不起作用
我似乎无法使我试图打印的表格停止在原来的60.000。 印刷永远在继续,巫婆让我相信我创造了一个无限的for循环。。 这个想法是打印一个表格,给出4种填料的50000和60000之间的税收,每增加一行增加50Java 我正试图用双重方法打印一张表,但不起作用,java,for-loop,methods,Java,For Loop,Methods,我似乎无法使我试图打印的表格停止在原来的60.000。 印刷永远在继续,巫婆让我相信我创造了一个无限的for循环。。 这个想法是打印一个表格,给出4种填料的50000和60000之间的税收,每增加一行增加50 public class FinantialAplicationTable { public static void main(String[] args) { int status=0; double taxableIncome=0;
public class FinantialAplicationTable {
public static void main(String[] args) {
int status=0;
double taxableIncome=0;
System.out.printf("Taxable Income\tSingle\tMarried Filling Jointly\tMarried Filling Sepratly\tHead Of Household\n");
System.out.printf(" or Qualifing Widower\n");
System.out.print("______________________________________________________________________________________________________\n");
printTable(status,taxableIncome);
}
public static double printTable(int status, double taxableIncome){
double tax1,tax2,tax3,tax4;
for ( taxableIncome=50000;taxableIncome<60000;taxableIncome =taxableIncome+50){
tax1 = 8350*0.10+(33950-8350)*0.15+(taxableIncome-33950);
tax2 = 16700*0.10+(taxableIncome-16700)*0.15;
tax3 = 8350*0.10+(33950-8350)*0.15+(taxableIncome-33950);
tax4 = 11950*0.10+(45500-11950)*015+(taxableIncome-45500);
if (taxableIncome>=50000 && taxableIncome<=60000){
System.out.println(Math.round(taxableIncome)+" "+Math.round(tax1)+" "+Math.round(tax2)+" "+Math.round(tax3)+" "+Math.round(tax4));
}
}
return printTable(status,taxableIncome);
}
}
公共类财务应用表{
公共静态void main(字符串[]args){
int status=0;
双重应纳税所得额=0;
System.out.printf(“应纳税所得额\t合并\t夫妻共同填写\t夫妻单独填写\t家庭日期”);
System.out.printf(“或限定鳏夫”);
系统。输出。系统。输出。打印系统。输出。打印((8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8月月月UUUUUUUUUUUUUU8 8 8 8 8 8 8 8 8 8 8 8系统系统。系统系统。输出。系统。系统。输出。打印打印打印打印打印打印(((8 8 8 8 8 8月月UUUU厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄UUUUUUUUUUUUUUUUUUUUUUUUUUU文章文章文章文章文章文章文章文章文章文章的UUUUUUUUUUUUUUUUUUUUU厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄uuuuuuuuuuuuuuuuuu\n”);
打印表(状态、应纳税收入);
}
公共静态双面打印表(int状态,双重可征税收入){
双重分类1,分类2,分类3,分类4;
对于(taxableIncome=50000;taxableIncome=50000&&taxableIncome将printTable的方法签名更改为:
public static void printTable(int status)
删除return语句并将for循环更改为:
for (double taxableIncome = 50000; taxableIncome < 60000; taxableIncome += 50)
for(双重应纳税所得额=50000;应纳税所得额<60000;应纳税所得额+=50)
问题在于printTable方法中的返回语句——每次到达返回语句时,都会再次递归调用相同的方法,此时将创建一个新的本地可征税收入变量,其值为50000,因此打印将无限期地继续。永久打印的原因是因为您没有退出检查。您有一个递归函数,它不会给你自己一条出路。要在60岁时退出,你可以:
public static void printTable(int status, double taxableIncome){
double tax1,tax2,tax3,tax4;
for ( taxableIncome=50000;taxableIncome<60000;taxableIncome =taxableIncome+50){
tax1 = 8350*0.10+(33950-8350)*0.15+(taxableIncome-33950);
tax2 = 16700*0.10+(taxableIncome-16700)*0.15;
tax3 = 8350*0.10+(33950-8350)*0.15+(taxableIncome-33950);
tax4 = 11950*0.10+(45500-11950)*015+(taxableIncome-45500);
if (taxableIncome>=50000 && taxableIncome<=60000){
System.out.println(Math.round(taxableIncome)+" "+Math.round(tax1)+" "+Math.round(tax2)+" "+Math.round(tax3)+" "+Math.round(tax4));
}
}
}
公共静态无效打印表(内部状态,双重应纳税收入){
双重分类1,分类2,分类3,分类4;
对于(taxableIncome=50000;taxableIncome=50000&&taxableIncome您将taxableIncome
作为参数传递,然后将其设置为50000
。因此,它执行for
循环,然后调用自身,每次将taxableIncome
重置为50000
,从而永不结束。我根据Mo添加了对for循环声明的更改ob评论说,将可征税收入纳入该方法是多余的。这不是使其发挥作用的必要条件,但更为整洁。