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;

既婚か独身かを入力して、年収を調べてから計算してもらいたいのですが、このエラーが発生します

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
4

5 に答える 5

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

する必要があります

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

どちらlowincome宣言された変数として認識されません。

于 2013-01-07T14:50:07.650 に答える
1

これを、借りている金額を返すヘルパー メソッドにする必要があります。これにより、厄介なネスティング ビジネスを取り除くことができます。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).
    */

}

この方法はよりクリーンで読みやすいです。

于 2013-01-07T15:15:40.610 に答える
1

条件に完全な意味を与えるには、括弧を使用する必要があります...

if ( annual  >  low income  ||(  annual  <  medincome  &&  aChar  == 'M' )) ... 
于 2013-01-07T14:53:34.460 に答える
1

これはエラートレースから来ています

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

あなたのように、変数内にスペースを入れることはできませんlow income

于 2013-01-07T16:25:55.200 に答える
1

このコードはすべきではありません:

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

これがあります:

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

変数 aChar を一貫して評価していないようです。最後の「else if」ステートメントでもこれを行います。

于 2013-01-07T16:38:34.937 に答える