【问题标题】:I got an error for the last 3 if else statements最后 3 个 if else 语句出现错误
【发布时间】:2013-01-07 14:46:50
【问题描述】:
if (annual <= lowincome && aChar == 'S')
    owe = annual * .25;
else if ( annual > lowincome || annual < medincome && aChar == 'S')
    owe = annual * .50;
else if (annual > medincome && Char == 'S')
    owe = annual * .75;
else if (aChar == 'M' && annual <= lowincome)
    owe = annual *.24;
else if(annual > low income || annual < medincome && aChar == 'M')
    owe = annual * .49;
else if(annual > medincome && Char == 'M')
    owe = annual * .74;

我希望用户输入他们是已婚还是单身,然后在找到年收入后进行计算。我收到此错误

TaxReturn.java:54: error: ')' expect
if(annual > low income || annual < medincome && aChar == 'M')
                                           ^
TaxReturn.java:54: error: not a statement
if(annual > low income || annual < medincome && aChar == 'M')
                                                   ^
TaxReturn.java:54: error: ';' expect
if(annual > low income || annual < medincome && aChar == 'M')

TaxReturn.java:56: error: 'else' without 'if'
else 
                            ^
TaxReturn.java:68: error: class, interface, or enum expected
}       
^
5 errors

【问题讨论】:

  • homework? 此标记已过时
  • 你为什么不喜欢牙套?不管怎样,这是你的完整代码吗?
  • OMG 太多的 if-else-if-else..!!您的代码有错误,建议您一一剖析,您将了解您在哪里做错了:)
  • 总是在嵌套这么多 if 时使用大括号

标签: java helper


【解决方案1】:
if(annual > low income || annual < medincome && aChar == 'M')

应该是

if(annual > lowincome || annual < medincome && aChar == 'M')

lowincome 都不被识别为已声明的变量。

【讨论】:

    【解决方案2】:

    您应该使用括号来为您的条件提供完美的含义......

    if ( annual  >  low income  ||(  annual  <  medincome  &&  aChar  == 'M' )) ... 
    

    【讨论】:

      【解决方案3】:

      你应该让它成为一个返回欠款的辅助方法,这将允许你摆脱那个讨厌的嵌套业务。如果您嵌套了三个以上的 if 语句,则需要重新考虑如何解决问题。我向你保证,你会因此而失分。

      话虽如此,您的代码由于“低”和“收入”之间的空间而被炸毁......应该是“低收入”。

      这里有一个示例,说明您可能会考虑如何重新组织您的代码...

      public BigDecimal getOwed(BigDecimal annual){
          if (annual <= lowincome && aChar == 'S'){
              return owe = annual * .25;
          }
      
          if ( annual > lowincome || annual < medincome && aChar == 'S'){
                 return owe = annual * .50;
          }
      
          if (annual > medincome && Char == 'S'){
              return owe = annual * .75;
          }
          /*go through all your cases in this fashion
          .
          .
          .
          handle the case that it doesnt match any (should never occur).
          */
      
      }
      

      这种方式更简洁,更易于阅读。

      【讨论】:

        【解决方案4】:

        这来自您的错误跟踪

        if(annual > low income || annual < medincome && aChar == 'M')
        

        变量内不能有空格,例如 low income

        【讨论】:

          【解决方案5】:

          这个代码不应该:

          if (annual > medincome && Char == 'S'){
              return owe = annual * .75;
          }
          

          是这样的:

          if (annual > medincome && aChar == 'S'){
              return owe = annual * .75;
          }
          

          您似乎没有始终如一地评估您的变量 aChar。您也可以在最后一个“else if”语句中执行此操作。

          【讨论】:

            猜你喜欢
            • 2013-06-18
            • 2015-01-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-07-21
            • 1970-01-01
            相关资源
            最近更新 更多