2013-04-10 99 views
0

任何人都看过下面的语句运行false?Android中的“IF语句”中的非常奇怪的行为

String BloodyHell = "Unbelievable"; 
if (BloodyHell == BloodyHell) >> false 

虽然不是该死的,我有:|-,-||o,-||-,o||o,o|XXXX

这些都不是真。虽然调试确切的东西仍然是错误的。

有人请帮助我在这里。这里的片段:

public String doStats() 
{  
     String[] pattern = splitPattern();   
     for (int i = 0; i < pattern.length; i++) 
     { 
      if (pattern[i] == "|-,-|") 
       frontClosed++; 
      if (pattern[i] == "|o,-|") 
       left++; 
      if (pattern[i] == "|-,o|") 
       right++; 
      if (pattern[i] == "|o,o|") 
       frontOpened++; 
      if (pattern[i] == "XXXX") 
       noFace++;   
     } 
} 

enter image description here

+0

http://stackoverflow.com/a/4700501/1052673 – 2013-04-10 00:16:47

+3

你需要小心你所做的广泛的例子。 'BloodyHell == BloodyHell'将永远*为真:http://ideone.com/ag6A29 – Eric 2013-04-10 00:18:53

+0

我相信他们在Java书籍和教程中讨论的第一件事是关于使用equals()并解释原因为了它?回覆。问题海报 – 2013-04-10 00:22:04

回答

3

在Java中,你应该使用String#equals方法来比较,而不是==字符串值。 ==运算符比较对象引用以查看它们是否是相同的对象,这就是为什么您继续得到false。对象引用是不同的,即使字符串的内容是相同的。

if (pattern[i].equals("|-,-|")) 
3

==equals()之间的差异。

比较字符串时,您想使用equals(); ==用于比较它们在内存中是否相同。