Java 如果发生这种情况,我该如何摆脱?
当使用一个for循环时,我需要中断if语句。但当我编译并运行它时,当我只需要一个for循环时,这三个for循环都会返回信息。我知道答案就在眼前,但我就是想不出答案是什么Java 如果发生这种情况,我该如何摆脱?,java,Java,当使用一个for循环时,我需要中断if语句。但当我编译并运行它时,当我只需要一个for循环时,这三个for循环都会返回信息。我知道答案就在眼前,但我就是想不出答案是什么 if (filestat == 'S' || filestat == 's') { for ( a = 0; a < 5000; a++) { taxableincome = grossincome - 5000 - (1000 * exemptions); taxrate = .15;
if (filestat == 'S' || filestat == 's')
{
for ( a = 0; a < 5000; a++)
{
taxableincome = grossincome - 5000 - (1000 * exemptions);
taxrate = .15;
taxAmount = taxableincome * taxrate;
System.out.println("Your Taxpayer ID is " + taxid);
System.out.println("Your taxable income is $" + taxableincome);
System.out.println("Your tax rate is %" + taxrate);
System.out.println("Your tax amount is $" + taxAmount);
break;
}
for (a = 5000; a <= 20000; a++)
{
taxableincome = grossincome - 5000 - (1000 * exemptions);
taxrate = .22;
taxAmount = taxableincome * taxrate;
System.out.println("Your Taxpayer ID is " + taxid);
System.out.println("Your taxable income is $" + taxableincome);
System.out.println("Your tax rate is %" + taxrate);
System.out.println("Your tax amount is $" + taxAmount);
break;
}
for (a = 20001; a >= 20001; a++)
{
taxableincome = grossincome - 5000 - (1000 * exemptions);
taxrate = .31;
taxAmount = taxableincome * taxrate;
System.out.println("Your Taxpayer ID is " + taxid);
System.out.println("Your taxable income is $" + taxableincome);
System.out.println("Your tax rate is %" + taxrate);
System.out.println("Your tax amount is $" + taxAmount);
break;
}
}
if(filestat=='S'| | filestat=='S')
{
对于(a=0;a<5000;a++)
{
应纳税所得额=总收入-5000-(1000*免税额);
税率=.15;
税额=应纳税所得额*税率;
System.out.println(“您的纳税人ID为”+taxid);
System.out.println(“您的应纳税所得额为“$”+应纳税所得额);
System.out.println(“您的税率为%”+税率);
System.out.println(“您的税额为$”+税额);
打破
}
对于(a=5000;a=20001;a++)
{
应纳税所得额=总收入-5000-(1000*免税额);
税率=.31;
税额=应纳税所得额*税率;
System.out.println(“您的纳税人ID为”+taxid);
System.out.println(“您的应纳税所得额为“$”+应纳税所得额);
System.out.println(“您的税率为%”+税率);
System.out.println(“您的税额为$”+税额);
打破
}
}
如果要打印所有可能的a
的输出,只需删除break
语句即可。(但必须为第三个循环提供一个上限。)
如果只想打印一个特定
a
的输出,则应使用If
而不是for
if (filestat == 'S' || filestat == 's')
{
if (a < 5000)
{
taxableincome = grossincome - 5000 - (1000 * exemptions);
taxrate = .15;
taxAmount = taxableincome * taxrate;
}
else if (a <= 20000)
{
taxableincome = grossincome - 5000 - (1000 * exemptions);
taxrate = .22;
taxAmount = taxableincome * taxrate;
}
else
{
taxableincome = grossincome - 5000 - (1000 * exemptions);
taxrate = .31;
taxAmount = taxableincome * taxrate;
}
}
System.out.println("Your Taxpayer ID is " + taxid);
System.out.println("Your taxable income is $" + taxableincome);
System.out.println("Your tax rate is %" + taxrate);
System.out.println("Your tax amount is $" + taxAmount);
if(filestat=='S'| | filestat=='S')
{
如果(a<5000)
{
应纳税所得额=总收入-5000-(1000*免税额);
税率=.15;
税额=应纳税所得额*税率;
}
否则,如果(a)
当使用一个for循环时,我需要中断if语句
这根本没有意义。因为在if
语句中,所有循环都至少无条件运行一次(不管break
语句是否也没有意义),所以不能指望Java神奇地“选择”其中一个循环
如果您不想运行后两个语句,为什么不直接删除它们?我猜您是在尝试基于a的值进行计算,您可以使用嵌套的If-else语句,而不是使用循环并在第一次迭代时中断循环
`if (filestat == 'S' || filestat == 's')
{
if( a >= 0 && a < 5000 )
//do some work
else if( a >= 5000 && a <= 20000 )
//do some work
else if( a > 20000)
//do some work
}`
`if(filestat=='S'| | filestat=='S')
{
如果(a>=0&&a<5000)
//做些工作
否则,如果(a>=5000和a 20000)
//做些工作
}`
您可以选择将代码封装在函数中,并将税率作为参数传递,因为它是唯一依赖于a值的变量。根本不要使用break
。这会使您的代码变得一团糟。因此,您在这里重复了大量代码,为什么不将for循环剥离到单个方法中呢?我认为您并不了解oodbreak
的工作原理-如果语句for loop
无条件的break不是for loop
,它就从循环中分离出来,而不是从语句中分离出来。我怀疑那些“循环”的语句实际上就是if语句。如果用if(a>=#和&a
替换每个for语句,它会像你想要的那样工作吗?