【发布时间】:2019-01-10 23:08:38
【问题描述】:
我最近刚开始学习 C++ 并创建了一个简单的 RPG 游戏以供练习。但我遇到的一个问题是switch 语句在使用default 案例时陷入了无限循环。
我的代码基本上是这样的:
while (cond)
{
//Ask user for input 1-4
cin >> choice;
switch(choice - 1)
{
case 0:
//Action
break;
case 1:
//Action
break;
case 2:
//Action
break;
case 3:
//Action
break;
default:
cout << "You entered an invalid command. Try again." << endl;
}
}
最终cond会在通过//action将敌人HP降至0或以下时变为false。
但是,当我输入随机键时,它确实会转到默认情况并再次要求用户输入,但会跳过 cin >> choice; 并在无限循环中再次重播默认情况。
我怎样才能避免这种情况?
【问题讨论】:
-
在输入可能无效后,您永远不会清除
cin的状态。 -
这并没有解决问题,但是如果用户输入从 1 到 4 的连线,我也倾向于使用这些值作为大小写标签。减 1 会使代码不那么清晰。
标签: c++