1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】C#コンパイラーエラー。"すべてのコードパスが値を返すわけではない"

2022-01-11 23:12:28

質問

整数を入力し、それが平均して1から20で割り切れるかどうかを判定する関数を実装したいのですが、以下のようなコードになります。

public static bool isTwenty(int num)
{
    for(int j = 1; j <= 20; j++)
    {
        if(num % j != 0)
        {
            return false;
        }
        else if(num % j == 0 && num == 20)
        {
            return true;
        }
    }
}

実行すると、エラーが発生します。

error CS0161: 'ProblemFive.isTwenty(int)': not all code paths return a value

解決方法は?

が足りません。 return ステートメントを使用します。

コンパイラがあなたのコードを見ると、3つ目のパス( else が発生する可能性がありますが、値を返しません。したがって not all code paths return a value .

私の提案した修正のために、私は return の後に、ループを終了させます。もう1つの明らかな点、それは else を持っていた return の値を if-else-if - が壊れてしまいます。 for ループになります。

public static bool isTwenty(int num)
{
    for(int j = 1; j <= 20; j++)
    {
        if(num % j != 0)
        {
            return false;
        }
        else if(num % j == 0 && num == 20)
        {
            return true;
        }
    }
    return false;  //This is your missing statement
}