Я пытаюсь прочитать значение атрибута, называемого «версия», из дерева. Значение «2.0». Я устанавливаю оператор if, спрашивающий, имеет ли значение атрибута значение 2.0 для запуска этого кода, вместо этого он запускает оператор else. Я смутился, что сделал логическое значение и установил его равным уравнению. Я распечатываю его, и он читает false, когда это действительно так. Вот мой код:если инструкция помогает при чтении значений атрибутов из дерева XML
out.print("Enter the URL of an RSS 2.0 news feed: ");
String url = in.nextLine();
XMLTree xml = new XMLTree1(url);
boolean t = xml.hasAttribute("version");
if (t) {
out.println(xml.attributeValue("version"));//this prints 2.0
boolean a = (xml.attributeValue("version") == "2.0"); //added this to debugg
out.println(a); //this gets set to false. why?
if (xml.attributeValue("version") == "2.0") {
out.println("Hello");
} else {
out.println("URL entered is not of version 2.0");
}
} else {
out.println("No attribute Version");
}
/*
* TODO: fill in body
*/
in.close();
out.close();
}
}
Im ввод URL: http://news.yahoo.com/rss/, что его дерево имеет корневой тег «RSS», который имеет атрибут «версию», который равен 2,0:
Я согласен с этим ответом, но могу ли я спросить, почему java не любит «==» в выражении if? Java начинающий здесь. :/ – WestonBuckeye
@WestonBuckeye: почему бы Java не понравилось? Оператор '==' и метод '.equals()' просто выполняют разные вещи. –
@WestonBuckeye - Java любит '==' просто отлично. Это просто означает, что «есть ли левая и правая сторона того же объекта?» Метод 'equals()' означает, что этот объект имеет то же значение, что и аргумент (по любой логике, которую этот объект хочет использовать для проверки равенства стоимости)? В случае объектов 'String' логика состоит в том, что две строки имеют одинаковое значение, если они содержат одну и ту же последовательность символов. Ваша проблема возникает из-за того, что два объекта String в Java могут иметь одно и то же значение, не будучи одним и тем же объектом. –