1. ホーム
  2. c#

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

2022-02-26 04:06:39

質問

与えられた整数が1から20で均等に割り切れるかどうかを返すコードを書こうとしています。
が、以下のようなエラーが出続けています。

error CS0161: 'ProblemFive.isTwenty(int)': すべてのコードパスが値を返すわけではありません。

以下は私のコードです。

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 ステートメントを使用します。

コンパイラがあなたのコードを見ると、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
}