Достигнув кода после цикла Java

У меня есть кусок кода из простого приложения чата, но это не важная часть этого вопроса. Это та часть кода, которая, как мне кажется, должна быть недоступна:

while (!end) {
            outputToServer.println(consoleInput.readLine());
        }

        communicationSocket.close();

    } catch (Exception e) {
        // TODO: handle exception
    }
}

@Override
public void run() { // receiving message from other clients

    String serverTextLine;

    try {
        while ((serverTextLine = inputFromServer.readLine()) != null) {
            System.out.println(serverTextLine);

            if (serverTextLine.indexOf("*** Goodbye") == 0) {
                end = true;
                return;
            }
        }

    } catch (Exception e) {

    }

}

Чего я не понимаю, так это как программа когда-нибудь достигнет части кода, в которой она устанавливает переменную "end" в значение true, когда цикл while, использующий ее как условие, находится перед ней… Я предполагаю, что это какой-то базовый ява вещи, которые я не помню, или что-то я упорно игнорировать:) Помогите, пожалуйста?

1 ответ

Поскольку код говорит, что контроль достигнет линии

end = true;

когда состояние

serverTextLine.indexOf("*** Goodbye") == 0

возвращает истину!

то есть метод indexOf(String) возвращает: индекс подстроки в строке, если существует, и возвращает -1, если не найден!

Случай получения "0" в качестве индекса возможен только тогда, когда строка начинается с подстроки. т.е. когда serverTextLine начинается с "*** Goodbye".

Другие вопросы по тегам