Достигнув кода после цикла 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".