Как повторить команду ввода, если пользовательский ввод недопустим со строковой переменной - C ++ - PullRequest
2 голосов
/ 23 февраля 2020

Так что у меня очень мало опыта в кодировании, и у написанного мною кода есть проблема, когда пользователь снова вводит, если правильно выбрал «да» в первый раз. Он работает правильно, если пользователь вводит «нет» или если пользователь пишет неверную опцию, следующий набор вопросов будет работать. Я не нашел примеров работы со строковыми переменными без использования массивов. Спасибо - PS Я знаю его дерьмовую форму, но я просто пытаюсь заставить его работать.

#include<string>
#include<iostream>

using namespace std;

int main() {
    string choice;

    cout<<"Do you choose to go fight in the war??\n\n";
    cout << "choose yes or no\n";
    cin >> choice;

    while(choice != "yes" || choice != "no")
    {
        cout << "pls enter again\n";
        cin >> choice;
        if(choice == "no") 
        {
            cout << "you live";
            break;
        }
        else(choice == "yes");
        {
            cout << "you die";
            break;
        }
    }
}

Ответы [ 4 ]

0 голосов
/ 23 февраля 2020

Используйте do - while l oop для ввода строки, а после l oop примените условия

#include<iostream>
using namespace std;
main()
{
    String choice;
    cout << "Do you choose to go fight in the war??\n\n";
    cout << "choose yes or no\n";
    do
    {
        cin >> choice;
        If(choice != "yes" || choice != "no") 
              Cout<<"please enter again";
     }
     while (choice != "yes" || choice != "no");
     If (choice == "no")
    {
          cout << "you live";
     } 
    else
    {
          cout << "you die";
     }

}
0 голосов
/ 23 февраля 2020

Одним из способов является использование бесконечного l oop для обработки ввода. Если указан верный ввод, прервите l oop.

using namespace std;

int main()
{
    string choice;

    cout << "Do you choose to go fight in the war??\n\n";
    cout << "choose yes or no\n";

    while (true) {
        cin >> choice;
        if (choice == "no") {
            cout << "you live";
            break;
        }
        else if (choice == "yes")
        {
            cout << "you die";
            break;
        }
        else {
            cout << "pls enter again\n";
        }
    }

    return 0;
}
0 голосов
/ 23 февраля 2020

Когда я начал изучать кодирование, я столкнулся с такими же проблемами c, как то, с чем вы сейчас боретесь. Я просто думаю, что у вас проблемы с синтаксисом и логикой кодирования c. Надеюсь, что мой код может как-то помочь!

 #include <iostream>
 #include <string>
 using namespace std;

 int main() {
   string choice;

   do {
       cout << "Do you choose to go fight in the war??\n";
       cout << "Choose yes or no\n";
       cin >> choice;

       if (choice == "no") {

        cout << "you live\n";
        break;

       } else if (choice == "yes") {

        cout << "you die\n";
        break;
       }

   } while (choice != "yes" && choice != "no");

   return 0;
 }
0 голосов
/ 23 февраля 2020

Вместо else вам нужно else if:

else if (choice == "yes") {
  cout << "you die";
  break;
}
...