2016-07-10 10 views
0

В настоящее время я работаю над своим проектом CharRoom в Java 8. Я пытаюсь решить ошибку, которая появляется, когда два клиента соединяются с одним и тем же псевдонимом. Самое простое и достаточное решение, которое я придумал, - добавить «(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; 
       } 
      } 

Что представляется неправильным. Вот результат, когда есть два пользователя, подключенных к одному и тому же псевдониму «пользователь».

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) ... 
... 
+5

Почему вы меняете i до -1 ?? –

+0

он становится i = 0 в следующей итерации, поэтому он снова проверяет, есть ли кто-то с псевдонимом «user (1)» и сменил псевдоним нового клиента на «user (1) (1)» – foxale

+0

такая манипуляция индекса цикла действительно BAD программирование ..... –

ответ

3

Вы завершающая ; в конце if, который не принадлежит там:

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.

+0

... и еще 2 часа, потраченных на пропуски с одной точкой с запятой Спасибо! – foxale

Смежные вопросы