В настоящее время я работаю над своим проектом CharRoom в Java 8. Я пытаюсь решить ошибку, которая появляется, когда два клиента соединяются с одним и тем же псевдонимом. Самое простое и достаточное решение, которое я придумал, - добавить «(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;
}
}
Что представляется неправильным. Вот результат, когда есть два пользователя, подключенных к одному и тому же псевдониму «пользователь».
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) ...
...
Почему вы меняете i до -1 ?? –
он становится i = 0 в следующей итерации, поэтому он снова проверяет, есть ли кто-то с псевдонимом «user (1)» и сменил псевдоним нового клиента на «user (1) (1)» – foxale
такая манипуляция индекса цикла действительно BAD программирование ..... –