C#返回错误“并非所有代码路径都返回值”

C#返回错误“并非所有代码路径都返回值”

我试图编写返回给定整数是否可被1到20整除的代码,
但我一直收到以下错误:

错误CS 0161:“ProblemFive.is20(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;
        }
    }}


慕尼黑的夜晚无繁华
浏览 1812回答 3
3回答

森林海

你错过了一个return声明。当编译器查看您的代码时,它会看到第三条路径(else可能发生的情况,但不返回值。因此not all code paths return a value.为了解决我的建议,我把return在你的循环结束后。另一个明显的点-添加一个else有一个return值到if-else-if-会打破for循环。public&nbsp;static&nbsp;bool&nbsp;isTwenty(int&nbsp;num){ &nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;1;&nbsp;j&nbsp;<=&nbsp;20;&nbsp;j++) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(num&nbsp;%&nbsp;j&nbsp;!=&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(num&nbsp;%&nbsp;j&nbsp;==&nbsp;0&nbsp;&&&nbsp;num&nbsp;==&nbsp;20) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;&nbsp;//This&nbsp;is&nbsp;your&nbsp;missing&nbsp;statement}

肥皂起泡泡

编译器不会得到在循环的最后一次迭代中返回的复杂逻辑,因此它认为您可以退出循环,最终什么都不返回。不要在最后一次迭代中返回,只需在循环之后返回true:public&nbsp;static&nbsp;bool&nbsp;isTwenty(int&nbsp;num)&nbsp;{ &nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;1;&nbsp;j&nbsp;<=&nbsp;20;&nbsp;j++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if(num&nbsp;%&nbsp;j&nbsp;!=&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;} &nbsp;&nbsp;return&nbsp;true;}附带注意,原始代码中有一个逻辑错误。你在检查num == 20在最后一种情况下,但是你应该检查一下j == 20..还检查num % j == 0是超乎寻常的,因为当你到达那里的时候,这是永远正确的。
打开App,查看更多内容
随时随地看视频慕课网APP