1

これは、私が取っているイントロプログラミングクラス用です。newValue合計に を追加するインスタンス メソッドを作成しました。メソッドには 2 つのパラメーターがあります: (金額タイプを識別する文字と金額) 最初のパラメーターで成功しました。2つ目は私を苦労させています。私は私たちにif文を想定しています。金額タイプがあるように作ったので、使用する文字が3つあり、それは真実です。を設定するif(amountType == false)と、コンパイラは「到達不能ステートメント」であると言います。if ステートメントの基準は、「金額の文字が無効な場合 (つまり、T、D、または E でない場合)、IllegalArgumentException をスローし、ユーザーにメッセージを返します。

public double newValue(boolean amountType, double amount)
{
  boolean T = amountType;
  boolean D = amountType;
  boolean E = amountType;


    if (amount < 0) 
    {
  throw new IllegalArgumentException("The amount needs to be 0 or larger");
    }
    return amount;



    if(amountType == false)
        // if not D, E, T.....then exception
    {
        throw new IllegalArgumentException("That is an invalid letter value. "
                + "The data will be ignored");
    } 
    else
    {
    }
}    

どんな助けでも大歓迎です。

4

4 に答える 4

2

あなたのreturnステートメントが邪魔になっています。一度実行されると、その後に落ちたコードは実行されません。メソッドで実行される最後の命令 (文字通りではない) である必要があります。代わりにこれを行うことができます:

public double newValue(boolean amountType, double amount) {
    boolean T = amountType;
    boolean D = amountType;
    boolean E = amountType;


    if (amount < 0) // Eliminate constraint 1
        throw new IllegalArgumentException("The amount needs to be 0 or larger");

    if (!amountType) // Eliminate constraint 2
        throw new IllegalArgumentException("That is an invalid letter value. "
                + "The data will be ignored");

    // Do your processing, now that you passed all tests

    return amount;
}
于 2016-02-20T18:02:21.923 に答える
1

最初のブロックのreturn amount内側に配置する必要があります。if

その理由は、最初のif条件がtrue例外である場合にスローされるためです。と評価された場合falsereturn amountが実行されます。

どちらの場合も、2 番目のifブロックは実行されません。

于 2016-02-20T18:02:01.197 に答える
0

Unreachable は、このメソッドで回線に到達できないことを意味します。if ステートメントなしで return ステートメントを追加するため、2 番目の if ステートメントをプログラムで実行することはできません。したがって、最初の if ステートメントで return ステートメントを移動すると、機能します。

于 2016-02-20T18:06:55.713 に答える
0

返品金額ステートメントがあり、常に実行され、その後のコードが実行されます。つまり、コントロールは常に返品金額から戻るため、ステートメントに到達できません。考えられる解決策の 1 つは、最初に金額タイプをチェックし、次に else 部分で amount < 0 ステートメントをチェックし、最後にそれを返すことです。

于 2016-02-20T18:07:18.783 に答える