Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较字符串似乎无法正常工作_Java_String_Equals - Fatal编程技术网

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

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

我目前正在用Java8进行CharRoom项目。我试图解决一个bug,当两个客户端使用相同的昵称连接时会出现这个bug。我提出的最简单也是充分的解决方案是,当一个新客户机与另一个客户机具有相同的昵称时,添加“(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;
                }
            }

您有一个尾随
不属于该代码,则在
末尾添加代码>:

这相当于此代码,这不是您想要的:

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;