Ifanweisung wird nicht richtig ausgeführt
-
Hali halo Leute,
und schon wieder habe ich eine Frage. So wie das als Anfänger eben ist.Das Problem ist dass in dem Programm hier die Ifanweisungen zur abfrage auf ja oder nein übersprungen beziungsweise nicht richtig ausgeführt werden.
int Menue() { int eingabe = 0; int i = 0; char JaNein; do { system("cls"); cout << "Menue" <<endl <<endl; cout << "weahle das gewuenschte Spiel" << endl; cout << "1. Zahlenspiel" << endl; cout << "2. Noch nicht vorhanden" << endl; cout << "3. Noch nicht vorhanden" << endl; cout << "4. Noch nicht vorhanden" << endl; cin >> eingabe; switch(eingabe) { case 1: system("cls"); cout << "Also eine Runde Zahlenspiel?" <<endl; cout << "(J)a / (N)ein"<< endl; cin >> JaNein; if(JaNein == '(j)' || '(J)') { system ("cls"); Zahlenspiel(); break; } else if(JaNein == '(n)'|| '(N)' ) { Menue(); } else { Menue(); } case 2: case 3: case 4: cout << "Das Spiel ist noch nicht vorhanden"; for(i =1 ; i <4 ; i++ ) { Sleep(1000); cout<<". "; if(i==3) { Sleep(1000); } } break; default: cout << "Gebe eine Zahl von 1-4 ein!"; for(i =1 ; i <4 ; i++ ) { Sleep(1000); cout<<". "; if(i==3) { Sleep(1000); } } break; } } while(eingabe != 1 || 2 || 3 || 4 ); } int main() { Menue(); cin.get(); return 0; }
Im Menü wird immer die erste Ifbedingung ausgeführt und zu der Funktion Zahlenspiel gesprungen (welche ich hier mal weg gelassen habe). Egal welchen Buchstaben ich eingebe. Bestimmt nur ein einfacher Syntaxfehler aber ich komm nicht drauf.
danke für eure Hilfe.
-
Sie werden schon richtig ausgeführt, du hast da nur zwei Böcke drin:
-
Du vergleichst in Zeile 25 einen
char
mit einer multi-character character constant. Prüfe einfach auf die einzelnen chars 'J' oder 'j' -
Dein if-statement zerfällt in die beiden Teilausdrücke
NaNein == '(j')
und'(J)'
. Während der erste Ausdruck noch potenziell die Möglichkeit hat,false
zurückzugeben, tut der Zweite das nie, da'(J)'
immertrue
zurückgibt. Der richtige Vergleich lautetif( JaNein == 'j' || JaNein == 'J' )
.
-
-
Das selbe, was @DocShoe geschrieben hat, gilt auch für Zeile 71.
Du musst eingabe explizit mit jedem deiner Werte vergleichen und dann die Verknüpfung bilden.
-
@DocShoe Vilen Dank hat halle Probleme gelöst.
-
@axels Danke ist mir noch garnicht aufgefalen und hätte in zukunft bestimmt zu problemen geführt. Danke
-
@axels sagte in Ifanweisung wird nicht richtig ausgeführt:
Das selbe, was @DocShoe geschrieben hat, gilt auch für Zeile 71.
Du musst eingabe explizit mit jedem deiner Werte vergleichen und dann 'oder' bilden.Bei != käme da ein && besser.
Oder man vergleicht auf den Bereich.
Entweder (!(eingabe >= 1 && eingabe <= 4))
Oder (eingabe < 1 || eingabe > 4)