Почему if возвращает false, если оно должно выполняться?
Переменную function типа String мы получаем за счет регулярного выражения. Регулярное выражение сравнивается с HTML страницей. То есть в переменной function хранятся некоторый текст с сайта. funcEx[0] принимает значение "showMSG". Далее идет сравнение, где я сравниваю funcEx[0] == "showMSG" и оно по непонятным мне причинам возвращает false. Ниже прикрепил картинку с результатом выполнения в консоли. Буду благодарен за помощь.
while(scanner.hasNextLine())
{
// System.out.println(scanner.nextLine());
Pattern p = Pattern.compile("<p>(.+?)<\\/p>");
Matcher m = p.matcher(scanner.nextLine());
// System.out.println(" " + m.find());
if(m.find())
{
// функция с аргументами
String function = m.group(1);
// вывод текста взятого с сайта
System.out.println(m.group(1));
String [] funcEx = function.split(" ");
// вывод первого слова текста. Как мы видим
// на картинке вывелся текст: "showMSG"
System.out.println(funcEx[0]);
// и в данный момент условие не выполняется :с Выполняется else
if(funcEx[0] == "showMSG")
{
JOptionPane.showMessageDialog(null, "CMD", funcEx[1], JOptionPane.OK_CANCEL_OPTION);
}
else
{
System.out.println("Условие ложно");
}
}
}
Ответы (1 шт):
Автор решения: Arty Mart
→ Ссылка
Попробуйте вместо == ставить .equals(). Возможно это решит вашу проблему и такой способ более правильный при сравнении строк и объектов.
