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 的 ConstructorString(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 回答