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的构造函数String(byte[])
?
我可以处理这个问题吗?
由于
答案 0 :(得分: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"));
false true
相关文档
答案 1 :(得分:1)
尝试执行System.out.println ("[" + sentence + "]");
或检查调试器中的变量(如果可以) - 您可能会发现该字符串不是您所期望的,例如最后有一个换行符。
String.equals()
中出现错误的可能性很小: - )
答案 2 :(得分:0)
这里的数据包是通过套接字接收的。有可能包含额外的空间。我无法模拟场景,因为数据是通过套接字。应用trim()在句子上再试一次。