2013-01-07 39 views
0
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; 

我希望用户输入,如果他们是已婚还是单身然后去虽然计算发现那里每年income.I后得到这个错误我得到一个错误的最后3如果else语句

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 
+0

[标签:家庭作业]? **这个标签是OBSOLETE **。 –

+1

为什么你不喜欢大括号?无论如何,这是你的完整代码吗? –

+0

OMG太多if-else-if-else .. !!你的代码中存在错误,我建议你逐个剖析,你将会知道你在哪里做过错误:) –

回答

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

应该

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

无论low也不income被认定为十进制拉雷变量。

1

您应该使用括号给你的条件完全意义...

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

你应该做这个,返回欠量一个辅助方法,这将让你摆脱那个讨厌的嵌套业务。如果嵌套了三个以上的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). 
    */ 

} 

这种方式是更清洁和更容易阅读。

1

这个来自您的错误跟踪

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

你不能有空间内可变的,就像你low income

1

不应把该代码:

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

是这样的:

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

它看起来像你不一致评估你的变量aChar。你也可以在最后的“else if”语句中执行此操作。