第一次输入失败后,输入验证循环无法正常工作

时间:2013-10-27 20:46:26

标签: c++

所以这对于捕获第一个无效输入很有效,但是一旦它们输入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: ";
    }

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

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

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

你没有在这个循环中触及choice的值,所以如果执行在循环中结束一次,那就没有出路了。只需记住在循环中实际获得choice的新值以避免此问题。

答案 1 :(得分:0)

您需要重做输入:

 while (!(std::cin >> choice) || (choice != 'c' && choice != 'C' && choice != 's' && choice != 'S'))