Почему я не могу сравнить текст из TextArea со строкой?
Так что я явно упускаю что-то совершенно очевидное здесь. У меня есть кнопка и список действий, подключенный к ней. Когда я нажимаю кнопку, я хочу запустить оператор if, который берет содержимое TextArea и сравнивает его со строкой. Вот так:
String a = "hello";
JTextArea area = new JTextArea("type something");
JButton button = new JButton("Go");
button. [insert actionlistener crap]
//here's the important part:
if (area.getText() == "hello"){
//this will not be executed
}
Это действительно странно. Я даже прошел через отладчик, и при этом условии if оба эти элемента были "привет". Но это пропускает это! Что я делаю неправильно?
РЕДАКТИРОВАТЬ: многие из вас говорят "использовать.equals". Кто-нибудь может сказать мне, почему?
5 ответов
Вам нужно использовать String.equals()
сравнить два. Не ==
Это должно решить проблему.
Ты должен сделать area.getText()
это метод, а не свойство.
Также вы должны сравнить их с equals
не с ==
,
Так
"hello".equals(area.getText())
это путь
Как другие указывают на String.equals
нужно.
Причина этого в том, что ==
проверит, являются ли оба объекта одним и тем же объектом, т.е. имеют ли они один и тот же адрес памяти.