【问题标题】:Loop: This method must return a result of type boolean循环:此方法必须返回布尔类型的结果
【发布时间】:2020-08-08 02:11:50
【问题描述】:

这是我得到的错误:

此方法必须返回布尔类型的结果

这是代码:

public boolean seleccionar(Aeronave otra) {
    for (int i = 0; i < this.as.length; i++) {
        if (otra != null && !otra.equals(this.as[i]) && otra.amenazadaPor(this.as[i])) {
            return true;
        } else {
            return false;
        }
    }
}

【问题讨论】:

    标签: java eclipse


    【解决方案1】:

    在最后一个大括号之前添加return false。如果 this.as.length == 0,您的函数不会返回任何内容,并且 Java 会因此出现编译错误。

    【讨论】:

      【解决方案2】:

      问题是for循环可能会遍历所有元素并最终到达末尾并且没有返回结果。在这种情况下,我们返回 false 以确保这一点。

      public boolean seleccionar (Aeronave otra) {
          for (int i=0; i < this.as.length; i++) {
              if (otra !=null && !otra.equals(this.as[i]) && otra.amenazadaPor(this.as[i])) {
                  return true;
              }
          }
          return false;
      }
      

      【讨论】:

        【解决方案3】:

        您的代码将在第一个循环元素处退出。但是当数组this.as 为空时,循环将不会执行,那么您的函数缺少返回值 - 因此编译器不允许这样做。

        要解决这个问题,只需移动 return false after 循环结束。

        public boolean seleccionar (Aeronave otra) {
            for (int i=0; i < this.as.length; i++) {
               if (otra !=null && !otra.equals(this.as[i]) && otra.amenazadaPor(this.as[i])) {
                  return true;
               }
            }
            return false; // if no elements are matching loop condition, return false
         }}
        

        【讨论】:

          猜你喜欢
          • 2013-11-24
          • 2013-12-18
          • 2015-09-25
          • 1970-01-01
          • 2020-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多