0
我目前正在使用Java 8中的CharRoom項目。我試圖解決兩個客戶端使用相同暱稱連接時出現的錯誤。我提出的最簡單也是最充分的解決方案是在新客戶端與其他客戶端具有相同暱稱時添加「(1)」。比較字符串似乎工作不正常
for(int i = 0; i < newClientNum; i++) // loop not considering new client
{
System.out.println("Client " + i + " nickname: " + clients[i].nickname);
if(clients[newClientNum].nickname.equals(clients[i].nickname));
{
clients[newClientNum].nickname += " (1)";
System.out.println("New clients new nickname: " + clients[newClientNum].nickname);
i = -1;
}
}
這似乎是不正確的。 下面是有兩個用戶使用相同暱稱「user」連接時的輸出。
Client 0 nickname: user
New clients new nickname: user (1) (1) (1) (1) (1) (1) (1) ...
Client 0 nickname: user
New clients new nickname: user (1) (1) (1) (1) (1) (1) (1) ...
...
你爲什麼重置我爲-1? –
它會在下一次迭代中變爲i = 0,因此它會再次檢查是否有人使用暱稱「user(1)」並將新客戶端的暱稱更改爲「user(1)(1)」 – foxale
這樣的循環索引操作確實是BAD編程..... –