比较字符串似乎无法正常工作

Comparing strings seems to be not working properly

我目前正在 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) ... 
...

你在 if 末尾有一个不属于那里的尾随 ;:

  if(clients[newClientNum].nickname.equals(clients[i].nickname));
        {
            clients[newClientNum].nickname += " (1)";
            System.out.println("New clients new nickname: " + clients[newClientNum].nickname);
            i = -1;
        }

相当于这段代码,不是你想要的:

if (clients[newClientNum].nickname.equals(clients[i].nickname)) {
    // do nothing
}

clients[newClientNum].nickname += " (1)";
System.out.println("New clients new nickname: " + clients[newClientNum].nickname);
i = -1;

删除if语句末尾的;