L oop: этот метод должен возвращать результат типа boolean - PullRequest
1 голос
/ 24 апреля 2020

Это ошибка, которую я получаю:

Этот метод должен возвращать результат типа boolean

И это код:

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;
        }
    }
}

Ответы [ 3 ]

3 голосов
/ 24 апреля 2020

Добавьте return false перед последней скобкой. Ваша функция ничего не возвращает, если this.as.length == 0, а Java из-за этого выдает ошибку компиляции.

2 голосов
/ 24 апреля 2020

Проблема в том, что вполне возможно, что for-l oop будет l oop через все элементы и в конце концов достигнет конца, и результат не будет возвращен. В этом случае мы возвращаем 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;
}
1 голос
/ 24 апреля 2020

Ваш код выйдет на первом элементе l oop. Но когда массив this.as пуст, поэтому l oop не будет выполняться, тогда ваша функция пропускает возвращаемое значение, поэтому компилятор не позволяет этого.

Чтобы решить эту проблему, просто переместите return false after l oop заканчивается.

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
 }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...