Скажите, где ошибка в коде Java?

Вот мой кусочек кода. Вначале все правильно, программа вроде исправно запускается и выполняется, но тут вы можете увидеть новый кусок - я решил теперь еще и проверять, а вдруг игрок вообще не будет вводить свое имя? До этого программа просто шла без имени - с пустым пробелом вместо него..

Однако, программа просто игнорирует мою проверку и работает как и без нового "если-то"! Буд-то она не понимает, что я прошу проверить, нет ли на месте имени игрока пустого места. Может быть я забыл какие-то знаки? Или нужно писать не if (name=="") а что-то другое?

//Запрашиваем имя пользователя для дальнейшего использования в диалогах.
System.out.println("Привет. Как зовут тебя?");
String name=in.readLine();
//Проверяем, ввел ли пользователь свое имя?
if (name=="")
{
System.out.println("Не хочешь говорить? Подозрительно..");
System.out.print("Продавщица хмурится. Видимо, теперь она доверяет вам немного меньше.");
}
//если ввел, то далее:
else

System.out.println("Что хочешь купить, " + name + "?");
System.out.println("1) Сигареты;");
System.out.println("2) Хлеб;");
System.out.println("3) Молоко;");
System.out.println("(Укажи цифру)");
//Принимаем ответ игрока. Запоминаем как "y":
String sn=in.readLine();
int y=Integer.parseInt(sn);
  • Вопрос задан
  • 2838 просмотров
Решения вопроса 1
pi314
@pi314
Президент Солнечной системы и окрестностей
//Проверяем, не ЗАБЫЛ ли пользователь ввести свое имя?
if (name == null || name.trim().isEmpty()) { ...


такая "хитрая" проверка нужна, т.к. readLine() вполне может вернуть null, и тогда мы упадем по NPE на name.trim()

В Джава сравнение строк делается так
if (name.equals("Вася"))
a name=="" сравнит объект name с другим, новым объектом типа String, со значением "" ... которые, разумеется, никогда не будут равны (вне зависимости от того, равны ли между собой ЗНАЧЕНИЯ строк), ибо это два разных объекта!
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
aratj
@aratj
программер.
name == "" - Не правильно.
почитай доки.

вообще как то так.

if (!"".equals(name))
{
...
}
Ответ написан
Ко всему описанному выше добавьте фигурные скобки после else и в конце.
Ответ написан
@sgtraf
habrahabr.ru/post/49582

В Java есть два способа сравнить объекты на равенство, == и метод equals.
== используется для примитивных типов. За его использование с объектами умные люди либо бьют по ушам либо всячески благодарят — для объектов == это исключительно сравнение по ссылке...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы