1
DatagramPacket receivePacket = new DatagramPacket(receiveData,
                                               receiveData.length);

_socket.receive(receivePacket);

String sentence = new String(receivePacket.getData());

InetAddress IPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

if(sentence.equals("hello")) (...)

質問:sentence.equal("hello")文が の場合、なぜ真ではないのです"hello"か? String の Constructor が原因String(byte[])ですか?

誰に対処できますか?

ありがとう

4

3 に答える 3

4

あなたの文字列にはおそらく含まれています"hello"が、他のジャンクが埋め込まれています。あなたは試すことができます

if (sentence.trim().equals("hello")) {...}

説明する:

String s = new String(new byte[]{0, 1, 'h', 'e', 'l', 'l', 'o', 2, 3});
System.out.println(s.equals("hello"));
System.out.println(s.trim().equals("hello"));
間違い  
真実

関連文書

于 2012-10-24T21:44:16.853 に答える
1

可能であれば、デバッガーで変数を実行するSystem.out.println ("[" + sentence + "]");か調べてみてください。たとえば、最後に改行文字があるなど、文字列が予期したものと異なる場合があります。

バグの可能性はString.equals()ほとんどありません:-)

于 2012-10-24T21:43:51.313 に答える
0

ここでは、パケットはソケットを介して受信されます。余分なスペースが含まれる可能性があります。データがソケット経由で送信されているため、シナリオをシミュレートできません。文にtrim()を適用して、再試行してください。

于 2012-10-25T08:47:47.073 に答える