public static boolean isPrime(int n){
for(int j=2;j<=n;j++){
if (n%j==0) return false;
else return true;
}
}这个方法在编译时为什么会出错....希望前辈们解答下为什么......public static boolean isPrime(int n){
for(int j=2;j<=n;j++){
if (n%j==0) return false;
}
return true;
}这样写就能通过编译
for(int j=2;j<=n;j++){
if (n%j==0) return false;
else return true;
}
}这个方法在编译时为什么会出错....希望前辈们解答下为什么......public static boolean isPrime(int n){
for(int j=2;j<=n;j++){
if (n%j==0) return false;
}
return true;
}这样写就能通过编译
if(n<2){
return false;
}else{
for(int j=2;j <=n;j++){
if (n%j==0) return false;
else return true;
}
return true;
}
}
public static boolean isPrime(int n){
if(n<2){
return false;
}else{
for(int j=2;j <=n;j++){
if (n%j==0) return false;
else return true;
}
// return true; //要是把这一句不要了...还是编译不通过....n不管取什么.都有会有反回值了吧
//为何这一句不能省去?
}
}
这个还是像2、3楼所说的一样,因为可能不执行for(){}循环的循环体,比如:我取n = 3,第1次循环时j=2,
2 <= 3成立,执行后面的循环体,完成后返回一个布尔值并且j++,j = 3;进入第2次循环,3 <= 3成立,执行后面的循环体,完
成后返回一个布尔值并且j++,j = 4;而4 <= 3不成立,所以不会再执行循环体,而这时没有相应的布尔值返回,
这和方法声明中需要返回一个boolean值是相违背的,所以会出错~~~~!!!