Я пишу простую консольную игру rpg, что я буду развивать сверхурочную работу с графикой и т. Д. Но сейчас у меня проблема с моими делами. ..while цикл. Я часто их не использую, но я думал, что это хорошо для этой необходимости. В принципе, у меня открытая история, затем я даю пользователю четыре варианта, которые они могут ввести, нажав либо «1», «2», «3», либо «4». Если пользователь вводит что-либо еще, должно отображаться сообщение и разрешать пользователю вводить правильный ввод. Мой код выглядит следующим образом:Do ... while цикл продолжает цикл, даже когда условие не выполняется
int action; // Used to determine what the user wants to do.
cout << "Story goes here\n\n";
cout << "What would you like to do? (1/2/3/4)\n\n";
cout << "1. Do this\n";
cout << "2. Do that\n";
cout << "3. Do this that\n";
cout << "4. Party\n\n";
cin >> action;
do
{
switch (action)
{
case 1:
cout << "1\n";
break;
case 2:
cout << "2\n";
break;
case 3:
cout << "3\n";
break;
case 4:
cout << "4\n";
break;
default:
cout << "I'm sorry, but I'm not sure what you want to do. Please tell me again using the corresponding number. (1/2/3/4)\n\n";
cin >> action;
break;
}
} while ((action != 1) || (action != 2) || (action != 3) || (action != 4));
system("pause");
Теперь я проверил, что произойдет, если я типа 5 или 6, он отображает сообщение по умолчанию и позволяет мне попробовать еще раз, однако, если я типа 1, 2, 3, или 4 он переходит в коммутатор и продолжает выводить номер, который у меня распечатывается. И это никогда не заканчивается. Я использую C++ с MS Visual Studio 2013 Express.
Я также использовал отладчик, и он говорит, что действие равно 2 (или любой другой номер, который я нажимаю), и он продолжает запускать цикл. Я не знаю, почему это происходит.
Ошибка вашего логического условия - измените все '||' на '&&'. –
Подумайте о том, какое условие будет оценивать, если 'action', скажем,' 2'. – juanchopanza