public static int sign(int n){
if(n > 0){
return 1;
}else if(n == 0){
return 0;
}else if(n < 0){
return -1;
}
}
为什么调用该方法时会有编译错误,而换成下面的就没有编译错误了,哪位大神能指点下
public static int sign(int n){
if(n > 0){
return 1;
}else if(n == 0){
return 0;
}else {
return -1;
}
}
if(n > 0){
return 1;
}else if(n == 0){
return 0;
}else if(n < 0){
return -1;
}
}
为什么调用该方法时会有编译错误,而换成下面的就没有编译错误了,哪位大神能指点下
public static int sign(int n){
if(n > 0){
return 1;
}else if(n == 0){
return 0;
}else {
return -1;
}
}
return 1;
}else if(n == 0){
return 0;
}else if(n < 0){
return -1;
}
}
因为你要是想上面这样写的话,有逻辑缺陷,有可能所有条件都不满足,导致没有返回值。而你的方法一定要有一个int的返回值
这个方法确实是有编译问题,你可以你先利用Eclipse的提示功能,找到原因:
Eclipse会提示你该方法没有返回一个int类型的值。原因是:输入参数n的值可能没法命中
n >0
n == 0
n < 0
这三个条件
第二 正确的做法public static int sign(int n) {
if (n > 0) {
return 1;
}
if (n == 0) {
return 0;
}
return -1;
}
这种写法比较清晰明了,没有那么多的else if语句。
public int sign(int n){
return n>0? 1:(n<0? -1:0);
}
return 1;
}else if(n == 0){
return 0;
}else {
return -1;
}
}
因为你这全是if 真 else 假有,有真就有假 有else if就有else,你没有else就表示还有一种结果没返回值,