почему это выражение возвращает истину - PullRequest
0 голосов
/ 12 июня 2011

(pass[i]!= null) && (pass[i].getName()!= "nullnull") <- возвращает true, когда я отлаживаю его, хотя значение <code>pass[i].getName() == "nullnull", когда я проверяю его в окне «Выражения» в eclipse при отладке,

im, используя диалоговое окно ввода для ввода двухимена

String firstName = (String)JOptionPane.showInputDialog("Enter First Name");
String lastName = (String)JOptionPane.showInputDialog("Enter Last Name");

и возвращающиеся

public String getName()
    {
        return FirstName + LastName;
    }

Ответы [ 5 ]

5 голосов
/ 12 июня 2011

У вас есть две разные строки с одинаковым значением, но вы сравниваете их по ссылке.

Вам нужно сравнить их по значению, написав "nullnull".equals(pass[i].getName()).
Обратный порядок будет работать дажеесли getName() возвращает null.

4 голосов
/ 12 июня 2011

Попробуйте использовать ".equals"

(pass[i]!= null) && !(pass[i].getName().equals("nullnull"))
2 голосов
/ 12 июня 2011

Я думаю, вам нужно

    (pass[i]!= null) && (!pass[i].getName().equals("nullnull"))
1 голос
/ 12 июня 2011

Строки не следует сравнивать с == или !=.Используйте String.equals().

== вернет истину, а != вернет ложь только тогда, когда обе строки являются одним и тем же строковым объектом (что отличается от сравнения текста, который они представляют).

0 голосов
/ 12 июня 2011

Если честно, это почти всегда будет правдой:

В java ссылки на объект оператора сравнения ==. Вы хотите метод .equals().

В вашем коде есть пробел - он взорвется, если getName() вернет null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...