У меня есть кусок кода из простого приложения чата, но это не важная часть этого вопроса. Это часть кода, которая, как мне кажется, должна быть недостижима:
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, который использует его как условие, перед ним... Я полагаю, что это некоторые основные java, который я не помню, или что-то, что я настойчиво игнорирую :) Помогите, пожалуйста?
поскольку код говорит, что управление достигнет линии
end = true;
когда условие
serverTextLine.indexOf("*** Goodbye") == 0
возвращает true !,
то есть метод indexOf (String) возвращает: индекс подстроки внутри строки, если она существует, и возвращает -1, если не найден!
Случай, чтобы получить "0" в качестве индекса, только тогда, когда строка начинается с подстроки. т.е. когда serverTextLine начинается с "*** Прощай".
run()
вы, вероятно, выполняете некоторые потоки.