Wie eine Schleife zurück zum Anfang der switch-Anweisung nach einer case -
Habe ich, was ich bin sicher, dass ist ein einfaches problem, aber ich kann ' T es herausfinden. Im nachfolgenden code möchte ich in der Lage sein, Fall 5 re-Anzeige die Optionen danach. Wie kann ich dies tun? Vielen Dank im Voraus!
//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;
Nicht eine Antwort, weil ich nicht will gehämmert werden. Es gibt immer Duff ' s device: en.wikipedia.org/wiki/Duff's_device .
InformationsquelleAutor Vladimir Marenus | 2012-10-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine switch-case-Konstrukt nicht einer iteration zu konstruieren. Es können nur wählen Sie einen bestimmten Fall und führen Sie es aus. Die Ablaufsteuerung kann nicht gehen zurück bis auf es.
So, Sie können es nicht verwenden, um eine Schleife.
Wickeln Sie es in ein während oder für Schleifenkonstrukt statt.
Schalten Sie einfach Zustand zu false, wenn Sie wollen, zu stoppen looping.
InformationsquelleAutor Anirudh Ramanathan
Wickeln Sie die Eingabe und wechseln Sie code in einer Schleife und einer Variablen zuweisen
exitLoop
beendet die Schleife. Gesetzt, die variable standardmäßig auf TRUE, außer in jenen Fällen, wo Sie möchten, wiederholen Sie die Eingabe. In diesen, SatzexitLoop
auf false.InformationsquelleAutor LSerni
Fügen Sie ein label, bevor Sie Ihre erste cout
dann im inneren des Gehäuses 5, hinzufügen
goto
sollte im Allgemeinen vermieden werden, in C++. Es gibt Verwendungen dafür, aber das passt nicht wirklich.das ist eine uralte Debatte, die ich nicht weiter eingehen will. Ich ' ll stick mit genau das, was ich sagte: es gibt Verwendungen dafür, aber sollte im Allgemeinen vermieden werden.
einige Diskussionen hier, stackoverflow.com/questions/379172/to-use-goto-or-not
Vielen Dank für die Tipps, springen, Jungs. Ich wusste nicht, dass es existierte bis vor kurzem, jetzt denke ich, ich werde gehen, es zu vergessen..!
InformationsquelleAutor cjamesm
Legte es in einen
for(;;)
Schleife und verwenden Sie diecontinue
stattbreak
. Weiterebreak
nach dem Ende derswitch
Anweisung zu fangen, die Fälle, die wirklich wollen, zu brechen:InformationsquelleAutor user207421