Попробую объяснить в чем проблема более подробно, давайте упростим условие while на секунду:
while (employed != "yes" || employed != "no")
Это означает, что цикл будет выполняться до тех пор, пока внутреннее выражение оценивается как true. Предположим, пользователь вводит "yes"
. Вот как это будет происходить постепенно, заменив employed
значением "yes"
1) while ("yes" != "yes" || "yes" != "no")
мы можем видеть, что "yes" != "yes"
есть false
, поэтому давайте заполним это в
2) while (false || "yes" != "no")
теперь мы оцениваем правую часть оператора или ||
. "yes" != "no"
ну да не равно нет, так что это правда
3) while (false || true)
Поскольку это логический оператор или , результат будет истинным, если хотя бы один из его операндов равен true. У нас есть одно true и одно false, поэтому оператор ||
выдает true
в результате
4) while (true)
Таким образом, ваш цикл никогда не завершается, потому что хотя бы один из правого или левого всегда будет истинным Вместо этого используйте операторы и &&
, которые имеют значение true, только если оба его операторов имеют значение true:
while (employed != "yes" && employed != "no")
То, что мы можем прочитать как «продолжайте, пока занятый не означает« да », а занятый - не« нет ». Вы можете связать столько дополнительных слов, сколько вы хотели бы поддержать.