我在这里尝试用flower1和flower2做的事情,一个是偶数,一个是奇怪,然后返回true。如果两者均为偶数,则返回false。如果两者都是奇数,则返回false。当我的代码是:
public class OppositesAttract {
public static boolean isLove(final int flower1, final int flower2) {
if(flower1%2==0 && flower2%2==0){
return false;
}else
if(flower1%2!=0 && flower2%2!=0){
return false;
} else
if(flower1%2==0 || flower2%2==0){
return true;
}
}
}我得到了一个“丢失的返回语句”错误。所以我补充道:
public class OppositesAttract {
public static boolean isLove(final int flower1, final int flower2) {
if(flower1%2==0 && flower2%2==0){
return false;
}else
if(flower1%2!=0 && flower2%2!=0){
return false;
} else
if(flower1%2==0 || flower2%2==0){
return true;
}else{
return true;
}
}
}现在,代码可以工作了,但我不明白为什么我必须添加额外的返回语句。
发布于 2022-02-07 11:19:48
编译器不知道前3个术语涵盖了所有情况。
if(flower1%2==0 && flower2%2==0){
return false;
} else if(flower1%2!=0 && flower2%2!=0){
return false;
} else if(flower1%2==0 || flower2%2==0){
return true;
} 对你来说,这句话的意思是:所有选项都包括在内。但是编译器只看到:
if (somethingThatMayBeTrue) {
} else if (somethingElseThatMayBeTrue) {
} else if (aThirdThingThatMayBeTrue) {
} .... and what if none of them are?您可能知道,最后一个if应该始终为true (因为您知道它们都不是不均匀的),但是编译器通常不会试图理解您的代码。
在您的例子中,最后一个子句(aThirdThingThatMayBeTrue,flower1%2==0 = flower2%2==0)实际上是
所以你可以这样对待它:
if(flower1%2==0 && flower2%2==0){
return false;
} else if(flower1%2!=0 && flower2%2!=0){
return false;
} else {
return true;
} https://stackoverflow.com/questions/71013487
复制相似问题