Aber wenn ich Sätze oder Worte zu fassen wie „Hallo“ es bricht den Code (Ausgänge „um eine Entscheidung treffen?“ Unendliche Zeiten)
Der Grund, warum dies passiert ist, weil Sie hello
eingegeben und Ihr Code liest Zeichen nach Zeichen, z 'h'
, 'e'
, 'l'
usw. Für jeden char es überprüft, ob es 'y'
ist oder 'n'
und jedes Mal ist es das tut, was Ihr Code zu tun anweist: cout << "You may only type y or n.";
und startet dann die Schleife mit cout << "Make a decision? (y/n) " << endl;
Um dies zu vermeiden Sie den Rest ignore könnten der Eingabe, wenn 'y'
oder 'n'
nicht eingegeben wird.
Weitere Punkte:
- Sie müssen sicherstellen, dass Sie Ihre Schleife endet, wenn
y
oder n
eingegeben
- Sie für Großbuchstaben überprüfen sollten
Y
oder N
sowie
- aus dem Code ist es nicht klar, was sind
userAnswer
und UserAnswer
. Wenn userAnswer ein string ist, dann sollten Sie vielleicht getline verwenden.
- sollten Sie minimale Codebeispiel vor, dass andere laufen kann und nicht einige Pseudo-Code
Unter der Annahme, dass Ihr userAnswer
you could do it this way ist char:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
char userAnswer;
while (1 /*user is not closing the program*/)
{
cout << "Make a decision? (y/n) " << endl;
cin >> userAnswer;
cout << "entered: '" << userAnswer << "'\n";
userAnswer = tolower(userAnswer);
if (userAnswer == 'y' || userAnswer == 'n')
break;
cout << "You may only type 'y' or 'n'.\n";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
Verwenden Sie eine 'while' Schleife. – wkl
Woher kommt 'userAnswer'? –
@wkl das Stück Code ist in einer While-Schleife –