1. ホーム
  2. java

[解決済み] if / for / while 内の "Missing return statement" (戻り値文の欠落)

2022-02-09 23:02:17

質問

の中で使われているreturnステートメントについて質問があります。 if() while() または for() ステートメントを使用します。

以下のメソッドでわかるように、私が期待しているのは return をString値で指定します。問題なのは、もし私が return 文の中に if ステートメント・ブロックの場合、コンパイラはエラーを返します。 missing return statement .

public String myMethod()
{
    if(condition)
    {
        return x;
    }
}

もちろん、メソッドヘッダを次のように変更することもできます。 void を使用し System.out.println の代わりに return . しかし、これは正しい方法なのでしょうか?私は何かを見逃しているのでしょうか?

どのように解決するのですか?

の中にreturnステートメントを入れると if , while または for ステートメントを使用すると、値を返すかどうかが決まります。もしこれらの文の中に入らないのであれば、そのメソッドは何らかの値 (ヌルかもしれません) を返さなければなりません。これを確実にするために、コンパイラはこの return 文を if , while または for .

しかし、もしあなたが if / else ブロックがあり、その中にリターンがある場合、コンパイラーは if または else が実行され、そのメソッドが値を返します。ですから、今回はコンパイラが無理強いすることはありません。

if(condition)
{
    return;
}
else
{
    return;
}