2016-06-20 2 views
0

Я делаю игру 2player, и когда я получаю информацию от сервера, она находится в формате «topic; arg1; arg2», поэтому, если я отправляю позиции, это «PlayerPos; x; y». Затем я использую метод split с символом «;». Но тогда ... Я даже попытался написать его на экране «PlayerPos» был написан правильно, но не может быть получен через if.Обработка Сплит (сервер)

Это, как я отправить данные на сервере:

server.write("PlayerPos;"+player1.x+";"+player1.y); 

И как я принимаю это на клиенте:

String Get=client.readString(); 
    String [] Getted = split(Get, ';'); 
    fill(0); 
    text(Get,20,20); 
    text(Getted[0],20,40); 
if(Getted[0]=="PlayerPos"){ 
    text("HERE",20,100); 
    player1.x=parseInt(Getted[1]); 
    player1.x=parseInt(Getted[2]); 
} 

Он пишет мне "PlayerPos; 200; 200" на экране, даже «PlayerPos» под ним. Но он никогда не пишет «ЗДЕСЬ», и он никогда не превращает его в if. Где моя ошибка?

ответ

0

Не используйте == при сравнении значений String. Используйте функцию equals() вместо:

if(Getted[0].equals("PlayerPos")){ 

От the Processing reference:

Для сравнения содержимого двух строк, используйте метод equals(), как в if (a.equals(b)), вместо if (a == b). A String - Object, поэтому сравнение их с оператором == сравнивает только то, сохранены ли оба Strings в том же месте памяти. Использование метода equals() гарантирует, что фактическое содержимое сравнивается. (troubleshooting reference имеет более подробное объяснение.)

+0

Спасибо! Я так глуп, я всегда забываю об этом. < –

+0

@ DavidAliFoxKnapčok Нет проблем. Имейте в виду, что вы можете продвигать и принимать полезные ответы, если вам это нравится. –