我有这个代码:
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 语句之间的 Toast 中,它表明 child_node_name 在某些时候完全等于“library_visual_scenes”。这没有第二个 if 语句为真。
第一个 if 语句,当 child_node_name 等于“#text”时,确实会执行。这意味着我从未在 Toast 中看到文本“#text”。
child_node_name 是一个字符串对象。这是将字符串与字符串进行比较的正确方法吗?
我不知道这里发生了什么。这会不会是某些 Android 特有的东西,因为如果我在我的计算机上将它作为纯 Java 运行,几乎相同的代码可以工作?
最佳答案
替换
child_node_name == "library_visual_scenes"
child_node_name == "#text"
与
"library_visual_scenes".equals(child_node_name);
"#text".equals(child_node_name);
这就是您在 Java 中必须比较字符串的方式。 “==”比较引用,而不是内容。
关于java - 无效的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4292544/