Ответ 1
Используйте String equals метод сравнения строк. Оператор ==
будет просто сравнивать ссылки на объекты.
if ( CurrentNode.getNodeName().toString().equals("start") ) {
...
У меня проблема, я довольно смущен. У меня есть следующие строки кода в приложении для Android:
System.out.println(CurrentNode.getNodeName().toString());
if (CurrentNode.getNodeName().toString() == "start") {
System.out.println("Yes it does!");
} else {
System.out.println("No it doesnt");
}
Когда я смотрю вывод первого оператора println, он появляется в LogCat как "start" (без кавычек, очевидно). Но затем, когда выполняется оператор if, он переходит к инструкции else и печатает "Нет, это не так".
Я задавался вопросом, может ли в имени node иметь в нем какой-то непечатаемый символ, поэтому я проверил длину строки, поступающей из getNodeName(), и длиной 5 символов, как вы бы ожидать.
Кто-нибудь понял, что здесь происходит?
Используйте String equals метод сравнения строк. Оператор ==
будет просто сравнивать ссылки на объекты.
if ( CurrentNode.getNodeName().toString().equals("start") ) {
...
Используйте CurrentNode.getNodeName().toString().equals("start")
.
В Java одна из самых распространенных ошибок, встречающихся новичками, использует ==
для сравнения строк. Вы должны помнить, что ==
сравнивает объект идентификатор (мыслить адреса памяти), а не контент.
Вам нужно использовать .equals
if ("start".equals(CurrentNode.getNodeName().toString()) { ... }