2016-10-06 5 views
-2

Ich habe ein sehr seltsames Problem bei der Arbeit an einem UDP-basierten Java-Projekt bekommen. Um es zusammenzufassen: Wenn ich eine Anfrage über ein DataPacket erhalte, wandle ich sie in eine neue Zeichenfolge um. Wenn ich dann den String-Wert überprüfe, gibt er weiterhin false zurück. Der Code ist unten.Java String Vergleiche

 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

Nichts Seltsames - Ihr String ist nicht "11". Hast du die einzelnen Zeichen im empfangenen String überprüft? Die nicht druckenden Zeichen? Der weiße Raum? Hast du die Saite zuerst getrimmt, bevor du sie verglichen hast? –

+2

Versuchen Sie einen Debugger auszuführen und sehen Sie, welche Nachricht gleich ist. – PrestonM

Antwort

1

versuchen Sie, Ihre Nachricht zu trimmen, vielleicht enthält es Platz.

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

Das hat funktioniert! Habe es nicht bemerkt, aber es scheint, als wäre der Leerraum das Problem! Vielen Dank – ZarifS

Verwandte Themen