Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果发生这种情况,我该如何摆脱?_Java - Fatal编程技术网

Java 如果发生这种情况,我该如何摆脱?

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;

当使用一个for循环时,我需要中断if语句。但当我编译并运行它时,当我只需要一个for循环时,这三个for循环都会返回信息。我知道答案就在眼前,但我就是想不出答案是什么

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循环剥离到单个方法中呢?我认为您并不了解ood
break
的工作原理-如果
语句
for loop
无条件的break不是
for loop
,它就从循环中分离出来,而不是从
语句中分离出来。我怀疑那些“循环”的语句实际上就是if语句。如果用
if(a>=#和&a
替换每个for语句,它会像你想要的那样工作吗?