首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我会得到一个丢失的返回语句错误,虽然在我的每个if和如果其他块中有一个返回语句?

为什么我会得到一个丢失的返回语句错误,虽然在我的每个if和如果其他块中有一个返回语句?
EN

Stack Overflow用户
提问于 2022-02-07 04:27:10
回答 1查看 70关注 0票数 0

我在这里尝试用flower1和flower2做的事情,一个是偶数,一个是奇怪,然后返回true。如果两者均为偶数,则返回false。如果两者都是奇数,则返回false。当我的代码是:

代码语言:javascript
复制
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;
    }

  }
  
}

我得到了一个“丢失的返回语句”错误。所以我补充道:

代码语言:javascript
复制
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;
    }

  }
  
}

现在,代码可以工作了,但我不明白为什么我必须添加额外的返回语句。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-07 11:19:48

编译器不知道前3个术语涵盖了所有情况。

代码语言:javascript
复制
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;
} 

对你来说,这句话的意思是:所有选项都包括在内。但是编译器只看到:

代码语言:javascript
复制
if (somethingThatMayBeTrue) {

} else if (somethingElseThatMayBeTrue) {

} else if (aThirdThingThatMayBeTrue) {

} .... and what if none of them are?

您可能知道,最后一个if应该始终为true (因为您知道它们都不是不均匀的),但是编译器通常不会试图理解您的代码。

在您的例子中,最后一个子句(aThirdThingThatMayBeTrue,flower1%2==0 = flower2%2==0)实际上是

所以你可以这样对待它:

代码语言:javascript
复制
if(flower1%2==0 && flower2%2==0){
  return false; 
} else if(flower1%2!=0 && flower2%2!=0){
  return false; 
} else {
  return true; 
} 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71013487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档