switch语句中的错误输入如何循环回第一种情况? C ++

时间:2017-10-15 04:51:59

标签: c++ switch-statement

所以这是我的代码

  int intNumber1, intNumber2, intResult, operation;
  cout << "enter two integer values: ";
  cin >> intNumber1 >> intNumber2;

  cout << "enter (1) for addition, or (2) for subtraction" << endl;
  cin >> operation;

  switch (operation)
  {

        case '1':
              intResult = intNumber1 + intNumber2;
             cout << intResult << endl ;
              break;

        case '2':

              intResult = intNumber1 - intNumber2;
              cout << intResult << endl; 
              break;

        default:
              cout << "wrong entry please enter a valid choice - 1 for addition, or 2 for subtraction. " << endl;
              cin >> operation;
              break;


  }


  return 0;

所以我只允许使用if / switch语句而不使用任何类型的循环。有没有办法让程序重新启动并让用户选择一个操作?

2 个答案:

答案 0 :(得分:0)

所以基本上我所做的很简单。我创建了一个保存开关盒的功能。基本上,执行此操作的是,当您的主函数运行时,它将运行userChoice函数,该函数显示提示并允许用户输入选项。如果用户输入除1或2以外的任何内容,则交换机将转为默认值,显示错误消息,然后再次运行userChoice函数。这不会循环回第一种情况,并询问用户他们想要什么操作符,但再次调用函数userChoice,这反过来就像重新启动程序或循环它而没有循环并再次提示用户输入。

包括

#include <iostream>
using namespace std;
void userChoice(); //Function prototype

int main() {

userChoice(); //Function for menu prompts and user entry
return 0;
}

//Function I created that holds your whole program

void userChoice() {
int intNumber1, intNumber2, intResult, operation;
cout << "enter two integer values: ";
cin >> intNumber1 >> intNumber2;

cout << "enter (1) for addition, or (2) for subtraction" << endl;
cin >> operation;
switch (operation)
{
case 1:
    intResult = intNumber1 + intNumber2;
    cout << intResult << endl;
    break;

case 2:

    intResult = intNumber1 - intNumber2;
    cout << intResult << endl;
    break;

default:
    cout << "wrong entry. " << 
    endl << "Restarting program.";
    userChoice(); //Calls/restarts the function
    break;
}
}

答案 1 :(得分:-1)

您可以使用do{}while()来检查条件 - 如果您不允许使用此条件,则可以使用label并在默认情况下使用goto,但请明智地使用它。另一个创意是将开关置于一个功能中。调用该函数并且开关将触发 - 然后如果错误的输入再次调用该函数 - 对于您在上面给出的代码中尝试执行的操作,void函数应该没问题。 我希望这个答案有所帮助!