循环。这个方法必须返回一个布尔类型的结果。

问题描述 投票:0回答:1

这是我得到的错误。

这个方法必须返回一个布尔类型的结果。

这就是代码。

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个回答
2
投票

问题是,for-loop有可能会在所有元素中循环,并最终到达终点而不返回任何结果。在这种情况下,我们返回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
投票

添加一个 return false 前的最后一个括号。 你的函数不返回任何内容,如果 this.as.length == 0因此,Java给出了一个编译错误。


1
投票

你的代码会在第一个循环元素时退出。但是当数组 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
 }}
© www.soinside.com 2019 - 2024. All rights reserved.