黑马程序员技术交流社区

标题: 对于非void方法。。 [打印本页]

作者: 李迪    时间: 2011-7-26 20:42
标题: 对于非void方法。。
对于非void方法,必须确保方法执行,每个可能流程中都存在return,
static int method(int num){
if (num>0)
return 1;
else if(num==0)
return 0;
else if (num<0)
return -1;
}这段代码为执行不成功呢?帮助
作者: 匿名    时间: 2011-7-26 20:47
标题: 回复 楼主 的帖子
楼主有点小粗心哟。
这是编译器不让你过,原因很简单,你每一个条件都有返回值不错,但是如果你传进来的数据没有进入任何一个条件分支呢?就木有了返回值,因此编译器不让你过。但是一个数字要么小于0要么等于0要么大于0,这些条件你都列取出来的,是不错。但编译器是严格检查的,不是运行时判断的,所以这是编译错误,楼主在最后一行的else if换成else就可以了,或者在最后一句加上return 0
作者: 匿名    时间: 2011-7-26 20:48
网上查德希望可以帮助你
编译器并不像想象中的那么智能,虽然你的选择语句已经包括了n的所有取值情况,但是对于形如if……else if……的选择语句,只有最后以else结束,编译器才能肯定已经罗列了所有选择。
也可以这么理解,考虑下面的代码:
public static int sign(int n) {
if(n=1) return 1;
else if(n==2) return 0;
else if(n==3) return -1;
}
可以肯定这选择语句并没有罗列出所有情况,但是在编译器看来,这跟你本来写的没有区别,编译器不可能帮用户判断复杂的逻辑,它必须按照某种可以准确描述的规则来编译。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2