2013-04-10 96 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(); ==用於比較它們在內存中是否相同。