Java 比较字符串似乎无法正常工作
我目前正在用Java8进行CharRoom项目。我试图解决一个bug,当两个客户端使用相同的昵称连接时会出现这个bug。我提出的最简单也是充分的解决方案是,当一个新客户机与另一个客户机具有相同的昵称时,添加“(1)”Java 比较字符串似乎无法正常工作,java,string,equals,Java,String,Equals,我目前正在用Java8进行CharRoom项目。我试图解决一个bug,当两个客户端使用相同的昵称连接时会出现这个bug。我提出的最简单也是充分的解决方案是,当一个新客户机与另一个客户机具有相同的昵称时,添加“(1)” for(int i = 0; i < newClientNum; i++) // loop not considering new client { System.out.println("Cl
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;
}
}
您有一个尾随
如果
不属于该代码,则在末尾添加代码>:
这相当于此代码,这不是您想要的:
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
语句的末尾。您有一个尾随如果
不属于该代码,则在末尾添加代码>:
这相当于此代码,这不是您想要的:
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
语句的末尾。为什么要将i重置为-1?它在下一次迭代中变为i=0,以便再次检查是否有昵称为“user(1)”的人,并将新客户端的昵称更改为“user(1)(1)”这种对循环索引的操作真的是糟糕的编程……那么我应该如何更改它呢?@foxale您可以浏览所有的客户端
,直到newClientNum
,将它们的昵称添加到集合
;然后只需执行while(!set.add(clients[newClientNum].nickname)){clients[newClientNum].nickname+=(1)”;}
。为什么要将i重置为-1?它在下一次迭代中变为i=0,以便再次检查是否有昵称为“user(1)”的人,并将新客户端的昵称更改为“user(1)(1)”这种对循环索引的操作真的是糟糕的编程……那么我应该如何更改它呢?@foxale您可以浏览所有的客户端
,直到newClientNum
,将它们的昵称添加到集合
;然后只需执行而(!set.add(clients[newClientNum].昵称)){clients[newClientNum].昵称+=“(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;