2014-03-31 105 views
-2

为什么这个if声明失败,我真的很困惑。我正在比较一个值,它总是返回false。java字符串比较失败?

String userDetail =“john”;

if (sentence.equals(userDetail)) 
{ 

String returnval = "100%"; 
sendData = returnval.getBytes(); 
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); 
serverConn.send(sendPacket); 
} 
else 
{ 
String returnval = sentence; 
sendData = returnval.getBytes(); 
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); 
serverConn.send(sendPacket); 
} 

我认为“句子”确实与约翰相等。正如你所看到的,我在else声明中一直在进行故障排除,我将返回值设置为句子,并且它返回john。

ANy suggestions?

+1

'我肯定“句子”不等于john.'的Java十年的发展和你意见不同。但严重的是,它可能包含显示为空格的字符,因此您无法通过打印来调试它。检查字符串的字节或检查其长度。 –

+1

您是否尝试过打印句子值,如果是这样,结果是什么? –

+0

我在这里看不到任何回报声明,那么'它返回'是什么意思? – bmargulies

回答

3

如果你的变量确实看起来等于“john”,那么它可能包含一些额外的空格。

删除空格,在开始和结束的字符串,使用:

sentence.trim() 
+0

没有那个运气。还是行不通 – lecardo