Почему я получаю сообщение об ошибке из-за отсутствия оператора возврата, хотя у меня он есть для l oop? - PullRequest
0 голосов
/ 08 марта 2020

Я пишу метод, который является частью класса Queue для задания колледжа. Предполагается, что для поиска в связанном списке объекта и, если он найден, возвращает индекс объекта, а если нет, то возвращает -1. Когда у меня нет «return -1;» В приведенном ниже коде я получаю сообщение об ошибке, говорящее о том, что у меня нет оператора возврата, когда у меня явно есть приведенный выше в for l oop. В чем здесь проблема?

    public int find(Object item) {

    Node current = head;


    for(int index = 0; index < size; index++) {
        if(current.data.equals(item)) {
            return index;
        }
        else {
            current = current.next;
        }
    }

    return -1;

}

Ответы [ 2 ]

5 голосов
/ 08 марта 2020

Непонятно, где определен размер, но допустим, что index < size никогда не соответствует истине, тогда ваш оператор возврата никогда не будет виден

Поэтому для области действия метода требуется окончательный оператор возврата для всех возможных путей кода.

2 голосов
/ 08 марта 2020

Потому что во время компиляции компилятор не знает значения переменных. Таким образом, компилятор не может оценить условия и проверить, является ли условие истинным или ложным. Поэтому исключение оператора «возврат -1», приводящего к ошибке. Надеюсь, это прояснит ваше замешательство.

...