4 回答
已采纳
遗忘草
TA贡献5条经验 获得超1个赞
最外层的if逻辑是严谨的,只要走到这里面就必须会有返回值;现在问题出在最外层的else没有绝对的最后返回值,虽然对于我们很直观地可以看到,for循环必然会至少执行一次,所以我们认为也必然会有返回值。但其实for循环归根结底也就是个判断语法,编译器在编译过程中并不认为a必须得大于2,换句话说for循环体有可能不被执行,即在这种情况下else米面的逻辑并没有返回值,这样编译器就会抛出如上所示错误。所以,这里可以用一个没有实际意义的返回(其实在实际运行中并不会执行到),骗过编译器,通过语法即可。示例如下(return true也可以,因为不会被执行):
一直被忽略
TA贡献1条经验 获得超0个赞
你的问题出现在第一个if哪里, 现在假设程序运行到else代码块中,而假设a=0,那么程序就不会执行你的for循环,从而,你的else 代码块就结束了,这就是编译器为什么出错。因为出现 刚才的情况你的方法没有返回值了
Caballarii
TA贡献1123条经验 获得超629个赞
编辑器并不能判断你一定进入那个分支,所以所有的if都要有else,并且if和else里都要有return,否则你就在最外面的ifelse外面再来一个return兜底,这里主要是第27行的if里面只有if,万一进了里面那个if的else,那就没有return了
添加回答
举报
0/150
提交
取消