현재 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) ...
...
왜 i를 -1로 재설정합니까? –
다음 반복에서 i = 0이되어 별명이 "user (1)"이고 새 클라이언트의 별명이 "user (1) (1)"로 변경되면 다시 검사합니다. – foxale
루프 색인 조작은 실제로 나쁜 것입니다 프로그래밍 ..... –