Ich habe diesen Code, es ist nur ein Teil von einem anderen größeren Code. Dies mag wie ein sehr einfacher Fehler erscheinen, aber ich kann immer noch nicht herausfinden, was es ist. Mein Problem ist, dass der Wert von 'Haus1' die While-Schleife nicht verlassen kann und weitergehen kann, um die Anweisung zu wechseln. Wenn ich zum Beispiel house1 = 0 eingegeben habe, wird das Programm "Ungültiger Wert, bitte erneut eingeben" drucken, aber wenn ich house1 = 1 eingegeben habe, nachdem ich den ungültigen Wert eingegeben habe, wird auch "ungültiger Wert, bitte erneut eingeben" ausgegeben. Hat jemand eine Idee, was war mein Fehler?While Schleife in C++ kann nicht
cin >> house1 ;
while ((0 <= house1) || (house1 >= 6))
{
cout << "Invalid value! please enter again:";
cin >> house1;
}
switch (house1)
{
case '1':
h1_p1 = h1_p1 - 5;
h2_p1 = h2_p1 + 1;
h3_p1 = h3_p1 + 1;
h4_p1 = h4_p1 + 1;
h5_p1 = h5_p1 + 1;
house_p1 = house_p1 + 1;
break;
case '2':
h2_p1 = h2_p1 - 5;
h3_p1 = h3_p1 + 1;
h4_p1 = h4_p1 + 1;
h5_p1 = h5_p1 + 1;
house_p1 = house_p1 + 2;
break;
'0 <= house1' Ich denke, dieser ist invertiert. Weil 0 <= 1 ist, wird es dich erneut fragen. * Auch * 'Fall' 1 '' und 'Fall 1' ist nicht das Gleiche. Ihre While-Schleife prüft auf den Integralwert 1, aber Ihre Case-Anweisung prüft den Integralwert des * Zeichens * 1. – Borgleader
Lesen Sie die Bedingung in der 'while'-Anweisung sorgfältig durch. Was macht es, wenn 'house1' gleich 0 ist? (Beachten Sie auch, dass die beiden Klammern um die beiden Vergleiche in dieser Anweisung redundant sind) –
Ich glaube, Sie wollen '(house1 <= 0)' und nicht '(0 <= house1)'. –