在情况下,如何循环回到开关语句的开头
How to loop back to the beginning of a switch statement after a case
我有一个简单的问题,但我无法弄清楚。在下面的代码中,我希望能够将案例5重新显示后来的选项。我怎样才能做到这一点?预先感谢!
// Input the race of your character
cout << "Choose a race here: " << endl
<< "1) Human, 2) Elf, 3) Dark Dwarf, 4) Commoner, 5) Race info, 6) Admin Debug Race : ";
cin >> mCharRace;
switch (mCharRace)
{
case 1:
cout << "You have chosen Human!" << endl;
mExpPoints = 999;
mArmor = mArmor + 2;
break;
case 2:
cout << "You have chosen Elf!" << endl;
mAccuracy = mAccuracy + 2;
mWeapon.mDamageRange.mLow = mWeapon.mDamageRange.mLow + 1;
break;
case 3:
cout << "You have chosen Dark Dwarf!" << endl;
mWeapon.mDamageRange.mHigh = mWeapon.mDamageRange.mHigh + 2;
mMaxHitPoints = mMaxHitPoints + 3;
break;
case 4:
cout << "You have chosen Commoner! Brave man." << endl;
mAccuracy = mAccuracy - 3;
mHitPoints = mHitPoints - 5;
mMaxHitPoints = 8;
mExpPoints = -250;
mNextLevelExp = 1500;
mArmor = -1;
break;
case 5:
cout << "Placeholder for explanation text." << endl;
break;
case 6:
cout << "ADMIN POWERS UNITE!!!!!!!" << endl;
mAccuracy = 20;
mHitPoints = 1000;
mMaxHitPoints = 1000;
mExpPoints = 0;
mNextLevelExp = 1000;
mArmor = 100;
mWeapon.mName = "Admin Sword of HNNNG!";
mWeapon.mDamageRange.mLow = 100;
mWeapon.mDamageRange.mHigh = 150;
mGold = 1000000;
break;
switch-case构造不是迭代构造。它只能选择某个情况并执行它。控制的流程无法恢复。
所以,您不能使用它来循环。将其包装在中,而或 for 循环构造代替。
while(condition){
switch (mCharRace){
...
...
}
}
只需转动条件 false 时要停止循环时。
将输入和切换代码包装在循环中,并分配一个变量exitLoop
以退出循环。默认情况下,将该变量设置为true,除非您想重复输入。在其中,将exitLoop
设置为false。
在第一个cout
之前添加标签label:
cout << "Choose a race here: " << endl
<< "1) Human, 2) Elf, 3) Dark Dwarf, 4) Commoner, 5) Race info, 6) Admin Debug Race : ";
cin >> mCharRace;
...
然后在案例5中,添加
goto label;
将其放入for(;;)
循环中,然后使用continue
代替break
。在switch
语句结束后,将另一个break
放置在捕获确实要破坏的情况下:
for (;;)
{
switch (x)
{
case case_that_wants_to_loop:
// ...
continue;
case case_that_wants_to_break:
// ...
break;
}
break;
}
相关文章:
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 为什么布尔开关语句有编译器警告?
- 如何使用"equal to"以外的评估编写开关语句
- 有没有办法在C++将字符串与开关语句一起使用?
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- C++实用程序,用于将长开关语句转换为封装开关案例阶梯的简洁函数调用
- 如何循环开关语句直到找到所需的数字?
- 带有关闭/打开布尔值的开关语句
- 清理开关语句
- 我的开关语句在C++中不起作用
- 枚举和开关语句C++
- 如何在开关语句中使用 cin "as a parameter"
- "constexpr if"比开关语句好吗?
- C++ 默认值在开关语句中不起作用
- 初学者C :为什么此开关语句给我一个错误
- C 开关语句无法正常工作
- 为什么允许在开关语句中声明变量?但不是声明 初始化
- 根据数据包类型更改行为,避免开关语句
- 如何在开关语句(C )内或外部使用IF语句
- 使用开关语句案例中的随机数