如何在一个case之后循环回一个switch语句的开头

Vla*_*nus 1 c++ loops switch-statement

我有一个我确定是一个简单的问题,但我无法弄清楚.在下面的代码中,我希望能够让案例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;
Run Code Online (Sandbox Code Playgroud)

Ani*_*han 10

switch-case结构不是迭代结构.它只能选择某个案例并执行它.由于它,控制流程无法恢复.

所以,你不能用它来循环.将其包裹一段时间用于循环构造.

while(condition){
   switch (mCharRace){
   ...
   ...
   }
}
Run Code Online (Sandbox Code Playgroud)

如果要停止循环,只需将条件设置false即可.


LSe*_*rni 6

将输入和切换代码包装在循环中,并分配一个变量exitLoop以退出循环.默认情况下,将该变量设置为TRUE,除非您要重复输入.在那些,设置exitLoop为false.