2014-01-05 2 views
0

Итак, я, очевидно, пропустил что-то совершенно очевидное здесь. У меня есть кнопка, и к ней подключился actionlistener. Когда я нажимаю кнопку, я хочу запустить оператор if, который принимает содержимое TextArea и сравнивает его со строкой. Like So:Почему я не могу сравнить текст из TextArea с String?

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 оба этих элемента являются «привет». Но он пропускает это! Что я делаю не так?

EDIT: многие из вас говорят, что «используйте .equals». Может ли кто-нибудь сказать мне, почему?

ответ

3

Чтобы сравнить эти два, вам необходимо использовать String.equals(). Не ==.

Это должно решить проблему.

5

Вы должны сделать area.getText(), это метод, а не свойство.

Также вы должны сравнить их с equals не с ==.

Так

"hello".equals(area.getText()) 

это путь.

+0

Это первая ошибка, когда я вводил q, я не делал этого в реальном коде. –

+1

+1 за то, что он первый респондент, упомянул об ошибках BOTH. –

+0

Можете ли вы сказать мне, почему? –

2

Вы сравниваете строки в java с equals(), а не ==.

1

Как и другие, указывается String.equals.

Причина этого заключается в том, что == проверяет, являются ли оба объекта фактически одним и тем же объектом, то есть имеют одинаковый адрес памяти.

+0

Используйте метод trim(), чтобы пропустить пробел в текстовом поле ** if (area.getText(). Trim(). Equals ("hello")) ** – JavaFan

Смежные вопросы