2010-11-27 124 views
1

我有這樣的代碼:非工作if語句

Node main_node = document.getDocumentElement(); 
NodeList main_node_list = main_node.getChildNodes(); 
for(int main_iterator = 0; main_iterator < main_node_list.getLength(); main_iterator++) { 
    Node child_node = main_node_list.item(main_iterator); 
    String child_node_name = child_node.getNodeName(); 
    if(child_node_name == "#text") continue; 
    Toast.makeText(context, "\"" + child_node_name + "\"", Toast.LENGTH_SHORT).show(); 
    if(child_node_name == "library_visual_scenes") { 
    ... 
    } 
} 

它不可能是任何清晰,但在祝酒之間的兩個if語句,它表明child_node_name恰好等於「library_visual_scenes」在一些點。這沒有第二個如果陳述是真實的。

第一個if語句在child_node_name等於「#text」時得到執行。這意味着我永遠不會在吐司中看到文本「#text」。

child_node_name是一個String對象。這是比較字符串與字符串的正確方法嗎?

我找不到這裏發生了什麼。這可能是一些Android特定的事情,因爲幾乎相同的代碼工作,如果我在我的電腦上運行它爲普通的Java?

回答

7

替換

child_node_name == "library_visual_scenes" 
child_node_name == "#text" 

隨着

"library_visual_scenes".equals(child_node_name); 
"#text".equals(child_node_name); 

這就是你如何比較java中的字符串。 「==」比較引用,而不是內容。

+2

如果這不是最常見的新手Java程序員的錯誤,它必須接近。 – 2010-11-27 16:16:54

2

更改以下行使用equals方法:

if(child_node_name.equals("#text")) continue; 

if(child_node_name.equals("library_visual_scenes")) {