所以这对于捕获第一个无效输入很有效,但是一旦它们输入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: ";
}
我该如何解决这个问题?
答案 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'))