为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕尼黑的夜晚无繁华 2019-06-19 16:38:51
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;         }     }}
查看完整描述

3 回答

?
森林海

TA贡献2011条经验 获得超2个赞

你错过了一个return声明。

当编译器查看您的代码时,它会看到第三条路径(else可能发生的情况,但不返回值。因此not all code paths return a value.

为了解决我的建议,我把return在你的循环结束后。另一个明显的点-添加一个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}


查看完整回答
反对 回复 2019-06-19
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

编译器不会得到在循环的最后一次迭代中返回的复杂逻辑,因此它认为您可以退出循环,最终什么都不返回。

不要在最后一次迭代中返回,只需在循环之后返回true:

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

附带注意,原始代码中有一个逻辑错误。你在检查num == 20在最后一种情况下,但是你应该检查一下j == 20..还检查num % j == 0是超乎寻常的,因为当你到达那里的时候,这是永远正确的。


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 1811 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信