Проблемы с условиями сканирования

#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") .