这是我得到的错误。
这个方法必须返回一个布尔类型的结果。
这就是代码。
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;
}
}
}
问题是,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;
}
添加一个 return false
前的最后一个括号。 你的函数不返回任何内容,如果 this.as.length == 0
因此,Java给出了一个编译错误。
你的代码会在第一个循环元素时退出。但是当数组 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
}}