2013-02-08 4 views
0

Когда пользователь ничего не вводит в диалоговом окне ввода, он все равно завершает цикл. Я отлаживал код и имя действительно «», когда пользователь ничего не вводит. Когда окно закрыто или отменяется щелчок, он не выходит из цикла. Это похоже на то, что имя == null, а не имя == "". Вот петля.Ввод диалогового окна конца конца

while(name == "" || name == null){ 
    name = JOptionPane.showInputDialog("Enter you're name:"); 
} 

Может ли кто-нибудь дать мне некоторое представление?

ответ

1

Не сравнивать строки с name == "". Используйте "".equals(name) или в вашем случае даже name.isEmpty() (доступно с Java 6).

== Используется для сравнения ссылок, а не значений объектов. Подробнее here.

Изменить код:

while(name == null || name.isEmpty()){ 
    name = JOptionPane.showInputDialog("Enter you're name:"); 
} 
+0

Это правильно. Спасибо за ответ. Такая глупая ошибка. –

0

Никогда не используйте == для сравнения String с в Java.

Использовать метод equals(String).

Смотрите следующие link

0

Там есть большая разница, используя «==» Одер равно. Попробуйте также использовать equalsIgnoreCase(), чтобы быть уверенным

while(name == null || name.equalsIgnoreCase("")){ 
     name = JOptionPane.showInputDialog("Enter you're name:"); 
    } 
0

Стоп сравнения строк и начать использовать класс Apache Commons Lang StringUtils. Он отлично справляется с нулями и хорошо протестирован. Вы хотите использовать StringUtils.isBlamk(name) или StringUtils.isEmpty(name)

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