1

所以这可以很好地捕捉第一个无效输入,但是一旦他们做出 1 个错误输入,正确的输入也不再起作用。如果他们第一次输入 c、C、s 或 S,它可以正常工作,但在第二次尝试它不会 EX:第一次尝试用户输入 p 然后它要求他们再试一次,第二次尝试他们输入 c 它问他们再试一次。

cout << "Checking (C) or Savings (S): enter your choice" << endl;
    cin >> choice;

    while(choice != 'c' && choice != 'C' && choice != 's' && choice != 'S')
        {
    cin.clear();
    cin.ignore(1000,'\n');
    cout << "Invalid input.  Try again: ";
    }

我该如何解决这个问题?

4

2 回答 2

2

检查输入验证循环的条件:

while(choice != 'c' && choice != 'C' && choice != 's' && choice != 'S')
    {

您不会choice在此循环中触及 的值,因此如果执行在循环中结束,则没有出路。只需记住在循环内部实际获取一个新值choice即可避免此问题。

于 2013-10-27T20:49:21.777 回答
0

您需要重做输入:

 while (!(std::cin >> choice) || (choice != 'c' && choice != 'C' && choice != 's' && choice != 'S'))
于 2013-10-27T20:53:04.913 回答