2016-10-06 26 views
-2

私は、UDPベースのJavaプロジェクトで作業中に非常に奇妙な問題にぶち当たっています。要約すると、DataPacketを介してリクエストを受け取ったときに新しい文字列に変換すると、文字列の値をチェックするとfalseが返され続けます。コードは以下の通りです。Javaの文字列比較

 DatagramPacket request = new DatagramPacket(buffer, buffer.length); 
     aSocket.receive(request); 
     String message = new String(request.getData()); 
     System.out.println("Received: " + new String(request.getData())); 
     System.out.println(message); //Prints out "11" without quotes when I send it 
     String a = "11"; 
     System.out.println("Received: " + message); 
     if(message.equals("11")){ 
      System.out.println("Got 11."); 
     } 
// Also tried .equals(a), but either ways it seems to be returning false. 
+2

あなたのストリングは "11"ではありません。受信した文字列の個々の文字をチェックしましたか?印刷されない文字ですか?空白?それを比較する前に文字列をトリムしましたか? –

+2

デバッガを実行して、どのメッセージが等しいかを確認してください。 – PrestonM

答えて

1

メッセージにはスペースが含まれている可能性があります。

DatagramPacket request = new DatagramPacket(buffer, buffer.length); 
    aSocket.receive(request); 
    String message = new String(request.getData()).trim(); 
    System.out.println("Received: " + new String(request.getData())); 
    System.out.println(message); //Prints out "11" without quotes when I send it 
    String a = "11"; 
    System.out.println("Received: " + message); 
    if(message.equals("11")){ 
     System.out.println("Got 11."); 
    } 
+0

これは機能しました!気づかなかったが、空白が問題だったようだ!ありがとうございました – ZarifS