4
public boolean isOdd (int value) {
    if ((value % 2)== 0){ 
        return false; 
    } else if ((value % 2) > 0){ 
        return true; 
    }
} 

我收到一条错误消息: private boolean isOdd(int value) throws Exception{ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This方法必须返回布尔类型的结果

我试着做:

public boolean isOdd (int value) {
    boolean isOdd =  ((value % 2) > 0);
    return true; 
} 

public boolean isEven (int value) {
    boolean isEven = ((value % 2) > 0);
    return true;
} 

它只返回 true 作为输出。

我不知道我在这里做错了什么!

4

8 回答 8

10

您的第一个代码段导致错误,因为您没有满足这种else情况。您不需要else if此处,因为您希望在不满足 if 语句的所有情况下执行第二个条件。尝试将其更改为:

public boolean isOdd (int value) {

    if ((value % 2)== 0){ 
        return false; 
    } 
    else { return true; }

} 

或更简单地说:

public boolean isOdd (int value) {
    return ((value % 2) != 0);
}
于 2013-04-05T15:59:52.500 回答
5

您需要在第一个片段中添加一个默认返回值,也就是不在任何 if 中的返回值。

于 2013-04-05T15:58:53.007 回答
2

做就是了

public boolean isOdd(int value) {
    return (value % 2) != 0;
}
于 2013-04-05T16:00:14.540 回答
2

你需要一个 else 或至少另一个回报。如果您的两个 if 语句都不匹配,则不会返回任何内容,这是不允许的。

public boolean isOdd (int value) {

if ((value % 2)== 0){ 
return false; } 

else if ((value % 2) > 0){ 
return true; }

return true;

}

您可以用以下方法替换该方法:

public boolean isOdd (int value) {
return (value % 2) != 0; }
于 2013-04-05T16:00:22.057 回答
2

如果您添加一条语句,编译错误就会消失else,即

if ((value % 2)== 0) { 
    return false;
} else if ((value % 2) > 0){ 
   return true;
} else {
   return ??; // default value
}
于 2013-04-05T16:00:52.503 回答
1

万一((value % 2) < 0)呢?你没有考虑到这种可能性,如果发生这种情况,就没有返回路径。

于 2013-04-05T15:59:34.570 回答
0
public boolean isEven (int value) {
  return value%2==0;
} 

public boolean isOdd (int value) {
  return value%2!=0;
} 
于 2013-04-05T15:58:53.050 回答
0

你也可以这样做:

public boolean isOdd (int value) {
    if ((value % 2) == 0)
        return false; 
    return true; 
} 
于 2013-04-11T20:46:49.120 回答