여기에 작은 코드 조각이 있습니다. 누군가가 TeamSpeak에서 채널을 전환하면이 코드가 호출됩니다. clid
은 사용자의 ID이고 cid
은 채널 ID입니다. 정수 lobby
및 verified
은 '토너먼트 로비'및 '이름 확인'채널을 나타내는 사전 설정된 ID이고 reg
은 누가 로비에 있는지를 결정하기위한 ID의 Vector
입니다. 이 함수 외부의 reg
에 대한 유일한 참조는 선언과 초기화입니다. 여기 코드는 다음과 같습니다Java 코드 실행 중지?
public void handleClientMove(int clid, int cid)
{
String name = query.getClientNameFromID(clid);
System.out.println(cid == lobby ? "lobby" : cid == verified ? "verified" : "non-tournament");
if(cid == lobby)
{
System.out.println("Handling Tournament Lobby");
if(!reg.contains(clid))
{
query.clientPoke(clid, "Welcome to the Tourney! Please change your name to include your rank. ex: 'D5 Name', 'M1 Name2'");
reg.add(clid);
}
}
else
{
if(reg.contains(clid)) reg.remove(clid);
}
System.out.println("test01");
if(cid == verified)
{
System.out.println("Handling Name Verified");
if(!isUserRegistered(clid))
{
participants.add(new Player(name, clid, true));
query.clientPoke(clid, "Your name has been verified and you are now entered in the tournament!");
}
}
}
println
문은 디버그 목적으로 만 있습니다. 내가 채널을 로비로 전환하면 (올바른 디버그 문으로 인해 clid
과 cid
이 전달되었음을 확인할 수 있음) 제대로 작동하지만 Name Verified 채널에 다시 가입하면 아무런 문제가 발생하지 않습니다. 전혀. 메소드 상단의 println
문이 실행되지만, if
블록 사이의 블록은 실행되지 않습니다. 따라서 실행되지 않아도 첫 번째 블록을 지나치지 못하게하는 것처럼 보입니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사!
통찰력에 감사드립니다. 배열에서 CLID 자체를 제거하라는 요구가 아니라 CLID가 정수이기 때문에 색인을 삭제할 뿐이며 배열 (인덱스 0)에 하나의 CLID 만 있으므로 제거 할 색인이 '1'이 아닙니다. . 나는 clid를 객체에 던져서 문제를 해결했다. –