Ja/Nein Programm mit while-Schleife in C++
Ich versuche, mich ein Programm fragt den Benutzer, ob Sie fortfahren möchten, um die nächste Berechnung. Für einige Gründe, warum immer, wenn ich in y oder Y, wird das Programm beendet. Allerdings, wenn ich nur eine Bedingung innerhalb der if-Anweisung(ohne '||' - Zeichen), funktioniert der code einwandfrei. Ich möchte nur sicherstellen, dass die Benutzer eingeben können sowohl groß-und Kleinbuchstaben.
Was ist falsch an dem code? Gibt es einen besseren Weg, dies zu tun?
int main()
{
char choice;
while(true)
{
cout<<"Would you like to perform other calculation?(Y/N)"<<endl;
cin >> choice;
if(choice == 'Y'|| choice =='y'){
return true;
}else if(choice =='N'||choice =='n'){
return false;
}
}
return 0;
}
- Mit dem debugger Schritt für Schritt durch den code und untersuchen, was geschieht für verschiedene Benutzereingaben.
- Und.. was erwartest du, Was passiert, wenn der code erreicht
return
- und Verlustrechnung (in deinem Beispiel)? Das führt mich zu der folgenden Frage: ist das dein echter code? - Was erwarten Sie
return true;
zu erreichen? - Warum sind Sie mit
return
Aussagen? - Wie können Sie Ihren code sogar "gut", ohne die "||".... Lesen Sie unten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
return
- Anweisung beendet eine Funktion, in diesem Fall, das ist das wichtigste, so endet Ihr Programm, welchen Wert Sie zurückgeben.Wenn Sie nur wollen, um aus der Schleife haben Sie zwei Lösungen:
Verwenden Sie einen booleschen Wert:
Verwenden
break
zum verlassen der Schleife:Aber beide diese Lösung betrachten alle Zeichen, außer N/n, wie "weiter", wenn Sie dies vermeiden wollen:
Den
return
- Anweisung wird verwendet, um die Steuerung wieder(und manchmal auch ein optionaler Wert), um eine Funktion Anrufer. Ist eine Rückgabe innerhalb der genannten Funktion, die Funktion ist beendet. Aus cppreference.com:(Hervorhebung von mir)
Können Sie den Eindruck haben, dass die Aussage
return true
innerhalb deiner while-Schleife kehrt den booleschen Wert true, um Ihre while-Bedingung. Es ist nicht.Wenn Ihr Endziel ist die Erstellung einer ja/Nein-Stil-Programm, das endet, wenn der Benutzer "Nein/Nein", dann können Sie Gebrauch machen von der
continue
undbreak
- Anweisungen, oder verwenden Sie einedo/while
Schleife.Mit
continue
undbreak
Den
continue
- Anweisung wird verwendet, um zu überspringen, um die nächste iteration einer Schleife, einer for-oder while, die Beendigung der aktuellen iteration. Aus cppreference.com:(Hervorhebung von mir)
Den
break
Aussage ist etwas ähnlich wiecontinue
, aber anstatt zu brechen die aktuelle iteration überspringen und zum nächsten, es sofort bricht das gesamte Programm aus der while-Schleife zurückgeben der Steuerung an den äußeren Umfang. Aus cppreference.com:(Hervorhebung von mir)
Nach Prüfung der oben genannten Informationen, können Sie ändern Ihr Programm zu nutzen
continue
undbreak
stattreturn
:Mit einem
do/while
SchleifeWährend die oben genannte Methode funktionieren würde, empfehle ich, mit meiner zweiten option-- eine
do/while
Schleife. Diedo/while
hat den Vorteil o wird kürzer, und nicht irgendeine Art von große Ablaufsteuerung. Von cppreference:Wenn nötig, Sie könnte sogar hinzufügen, Fehlerüberprüfung zu validieren, die eine Benutzer-Eingabe:
Ausgabe
Referenzen und Ressourcen
Ich schrieb einige code und es funktioniert wie ein Charme mit "goto".
Der code ist auch im Lieferumfang enthalten Daten der Validierung als gut. Vielen Dank an @Treycos.
Ausgabe:
Für groß-n: