所以我在测试时确定while循环运行时运行这个问题。如果一个非整数值输入cin < < a;循环将无休止地执行而不要求进一步的a值,如果输入的是整数,但不是列出的其中一个,它可以正常工作,但我希望它能够解释用户尝试的任何输入。有没有简单的方法来解决这个问题?我认为它与一个int是有关系的,但是我稍后需要一个int语句作为switch语句。While循环对非整数奇怪地响应
int a;
cout << "What type of game do you wish to play?\n(Enter the number of the menu option for)\n(1):PVP\n(2):PvE\n(3):EVE\n";
cin >> a;
while (!((a == 1) || (a == 2) || (a == 3)))
{
cout << "That is not a valid gametype. Pick from the following menu:\n(1):PVP\n(2):PvE\n(3):EVE\n";
a = 0;
cin >> a;
}
哇,这么多的括号!你不需要围绕单个'=='测试的测试,你可以通过应用De Morgan的定理,在三个测试中摆脱对:'while(a!= 1 && a!= 2 && a!= 3)'更容易阅读...... –