#java #conditional
#java #условный
Вопрос:
Я кодирую анкету, и после определенного раздела программа спрашивает: «Это завершено?», И это должен быть ответ «да» или «нет». Итак, я закодировал эти условия, но получаю сообщение об ошибке «несовместимые типы».
System.out.println("Is that complete?");
String answer = sc.nextLine();
if(answer="no")
{
System.out.println("Continue:");
Continued = sc.nextLine();
if(answer="yes")
{
System.out.println("Okay.");
if(answer != "yes" || "no")
System.out.println("That is not a valid input.");
isThatComplete();
}
}
Спасибо!
Комментарии:
1. Почему вы написали их таким образом?
2. Вы неправильно
==
вводите (сравнение) как=
(назначение), хотя я слышал, что в Java вы должны использовать.equals
в любом случае. Кроме того,answer != "yes" || "no"
не работает.||
это оператор, подобный любому другому; вам нужно предоставить ему соответствующие операнды, т.е.!(answer.equals("yes") || answer.equals("no"))
.
Ответ №1:
if (answer != "yes" || "no")
||
Оператор работает с логическими значениями, но вы предоставляете логическое значение и строку, поскольку оно анализируется как
(answer != "yes") || "no")
Правильный способ написать это был бы
if (!answer.equals("yes") amp;amp; !answer.equals("no"))
или, согласно закону Де Моргана:
if (!(answer.equals("yes") || answer.equals("no"))
Имейте в виду, что я использовал equals(..)
вместо ==
, потому что равенство между объектами не должно проверяться ==
, что просто проверяет ссылки.
Ответ №2:
Следующая строка неверна. Он ожидает логическое значение, пока вы даете ему строку.
if(answer="no")
Вы должны использовать == вместо = . В любом случае, лучшим способом сделать это было бы:
if("no".equals(answer))
Попробуйте то же самое для проверок if.
Кстати, ваш код выглядит действительно плохо. Я не уверен, что вы пытаетесь сделать здесь : if(answer != "yes" || "no")
.