1

我有一个简单的聊天应用程序的代码块,但这不是这个问题的重要部分。在我看来,这是代码的一部分,应该无法访问:

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) {

    }

}

我不明白的是,当使用它作为条件的while循环在它之前时,程序将如何到达将“end”变量设置为true的代码部分......我想这是一些基本的java 我不记得的东西,或者我一直忽略的东西:) 请帮忙?

4

1 回答 1

1

正如代码所说,控件将到达该行

end = true;

当条件

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

返回真!,

那就是方法 indexOf(String) 返回:如果存在字符串中子字符串的索引,如果没有找到则返回 -1!

只有当字符串以子字符串开头时,才能将“0”作为索引。即,当serverTextLine以“*** Goodbye”开头时。

于 2014-12-23T03:34:00.833 回答