0

到達不能ステートメントがJavaで実際に何を意味するのかを理解するのに本当に助けが必要です。私は以下を持っています。コンパイルしようとすると、到達不能ステートメントエラーが発生します。ここ Stackoverflow で、到達不能ステートメントに関する同様の質問をいくつか見てきましたが、私の質問に答えるものはありません。return ステートメントがどのように機能するかに基づいて、このバージョンがコンパイルされない理由を知りたいです。

public int refundBalance()
{
    return balance;
    balance = 0;
}

ここで同様の質問をしても答えが得られないため、この質問をしています。return はコード ブロック内の最後のステートメントである必要があると推測していますが、Java について十分な知識がなく、自分の結論について確信が持てません。したがって、説明をいただければ幸いです。

4

5 に答える 5

1

はい、returnステートメントはコード ブロック内の最後のステートメントである必要があります。returnそうでない場合、ステートメントは現在のメソッドを呼び出したメソッド (またはfinally存在する場合は最初にブロック)に制御を移すため、それより下のコードには到達しません。ステートメントの後にブロック内にコードを記述しても意味がないreturnため、許可されていません。

于 2014-05-07T23:50:14.497 に答える
1

return ステートメントが実行されると、次に何が起こると思いますか!? 制御は呼び出し側プログラムに戻り、return に続くステートメントは実行できなくなります。

この関数を本当に実装したいようです。これにより、次のように現在の残高が明らかに返金されます。

public int refundBalance() {
    int result = balance;
    balance = 0;
    return result;
}
于 2014-05-08T00:05:37.090 に答える
0

このreturnステートメントにより、メソッドが終了します。したがってreturn、同じコード ブロック内のステートメントの後のステートメントは実行されません。そのため、このエラーが発生しています。

于 2014-05-07T23:57:46.010 に答える
0

これを機能させるには、別の変数をバランスに設定し、次にバランスを 0 に設定してから、他の変数を返す必要があります。

于 2014-05-08T00:00:38.860 に答える
0

returnステートメントは、現在の関数が返すものを指示するだけでなく、関数を終了させます。したがって、後のステートメントreturnは、どのような状況でも本当に到達不能であり、存在すべきではありません。

于 2014-05-07T23:50:56.293 に答える