[英]Java - remove method in Vector class always returns True
Here i have my method 我在这里有我的方法
System.out.println("removeConnectedUser called. size connectedUsers="+connectedUsers.size());
if(connectedUsers.remove(conUser));
{
System.out.println("Removing user "+conUser.conn.getRemoteSocketAddress().toString()+"..."+connectedUsers.size());
writeUserAction(conUser.conn.getRemoteSocketAddress().toString(),"999");
try
{
conUser.conn.close();
}catch(IOException e){
System.out.println("Exception in removeConnectedUser");
}
ServerMainPanel.updateConnectedUsers(connectedUsers.size());
}
The problem is that this method may be called more than one time, so it's executed more than necessary. 问题在于此方法可能被调用多次,因此执行的次数超过了必要。 To filter bad calls, i've added if(connectedUsers.remove(conUser));
为了过滤坏电话,我添加了if(connectedUsers.remove(conUser)); but this always return true!
但这总是返回true! It is the console output
它是控制台输出
Error in liveUpdate:java.net.SocketException: Connection reset by peer: socket write error
removeConnectedUser called. size connectedUsers=1
Removing user /10.175.33.179:4085 ...0
Error liveSecUpdate:java.net.SocketException: Socket closed
removeConnectedUser called. size connectedUsers=0
Removing user /10.175.33.179:4085 ...0
So, vector.remove always returns True, even if vector's size is Zero. 因此,即使vector的大小为零,vector.remove始终返回True。 1- it's impossible element is removed if size()=0, 2- impossible i'm having two instances of the same object in this vector, because i have connected just one client
1-如果size()= 0,则删除不可能的元素,2-不可能,我在此向量中具有同一对象的两个实例,因为我只连接了一个客户端
You have a spurious semicolon at the end of the if
: if
末尾有一个假冒的分号:
if(connectedUsers.remove(conUser));
^ REMOVE THIS
This makes the code block that follows execute irrespective of the if
condition. 这使得无论
if
条件如何,后续代码块都可以执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.