定义判断质数的方法,奇怪的语法错误

http://img.mukewang.com/57db95190001dd9403940332.jpg

错误提示如下:

http://img.mukewang.com/57db95380001d59603500120.jpg

我明明有返回布尔值,为什么还出错?

斯蒂芬大夫
浏览 1760回答 4
4回答

遗忘草

 最外层的if逻辑是严谨的,只要走到这里面就必须会有返回值;现在问题出在最外层的else没有绝对的最后返回值,虽然对于我们很直观地可以看到,for循环必然会至少执行一次,所以我们认为也必然会有返回值。但其实for循环归根结底也就是个判断语法,编译器在编译过程中并不认为a必须得大于2,换句话说for循环体有可能不被执行,即在这种情况下else米面的逻辑并没有返回值,这样编译器就会抛出如上所示错误。所以,这里可以用一个没有实际意义的返回(其实在实际运行中并不会执行到),骗过编译器,通过语法即可。示例如下(return true也可以,因为不会被执行):

Teemo_

举例来说,你28行的if如果不成立,则没有返回值。

一直被忽略

你的问题出现在第一个if哪里, 现在假设程序运行到else代码块中,而假设a=0,那么程序就不会执行你的for循环,从而,你的else 代码块就结束了,这就是编译器为什么出错。因为出现 刚才的情况你的方法没有返回值了

Caballarii

编辑器并不能判断你一定进入那个分支,所以所有的if都要有else,并且if和else里都要有return,否则你就在最外面的ifelse外面再来一个return兜底,这里主要是第27行的if里面只有if,万一进了里面那个if的else,那就没有return了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java