Ich frage mich nur, wie ich das Programm beenden kann, nachdem ich die Eingabe abgeschlossen habe? Da der Scanner nach mehreren "Enter" noch fortfahren würde, nehme ich an, dass ich weiterhin Eingaben eingeben werde ... Ich habe es versucht:
%Vor%und
%Vor%Sie haben nicht funktioniert .... Das Programm geht weiter und verwirrt mit der ursprünglichen Absicht,
Das Problem ist, dass ein Programm (wie Ihres) nicht weiß, dass der Benutzer Eingaben eingegeben hat, es sei denn, der Benutzer ... sagt es irgendwie.
Es gibt zwei Möglichkeiten, wie der Benutzer dies tun könnte:
Geben Sie einen "Dateiende" -Marker ein. Unter UNIX ist dies (typischerweise) CTRL + D hasNextLine()
false
zurückgibt.
Geben Sie eine spezielle Eingabe ein, die vom Programm als "Ich bin fertig" erkannt wird. Zum Beispiel könnte es eine leere Zeile oder ein spezieller Wert wie "exit" sein. Das Programm muss dies speziell testen.
(Sie könnten auch einen Timer verwenden und davon ausgehen, dass der Benutzer fertig ist, wenn er keine Eingabe für N Sekunden oder N Minuten eingibt. Aber das ist keine benutzerfreundliche Art, dies zu tun. )
Der Grund dafür, dass Ihre aktuelle Version fehlschlägt, ist, dass Sie ==
verwenden, um nach einer leeren Zeichenfolge zu suchen. Sie sollten entweder die Methoden equals
oder isEmpty
verwenden.
Andere Dinge, die zu berücksichtigen sind, sind die Groß- / Kleinschreibung (z. B. "Ausgang" gegenüber "Ausgang") und die Auswirkungen von führenden oder nachfolgenden Leerräumen (z. B. "Ausgang" gegen "Ausgang").
Bei diesem Ansatz müssen Sie explizit einen Beendigungsbefehl oder eine Beendigungsbedingung erstellen. Zum Beispiel:
%Vor% Zusätzlich müssen Sie String-Gleich-Fälle mit .equals()
nicht ==
behandeln. ==
vergleicht die Adressen von zwei Strings, die, sofern sie nicht das gleiche Objekt sind, niemals wahr sein werden.
In diesem Fall empfehle ich Ihnen, do, while loop statt while zu verwenden.
%Vor%Um das Programm zu beenden, müssen Sie einfach einen String-Header z. Ausfahrt. Wenn die Eingabe gleich ist, um zu beenden, wird das Programm beendet. Außerdem können Benutzer Strg + C drücken, um das Programm zu beenden.
Sie können die nächste Eingabezeile von der Konsole aus überprüfen und nach Ihrem Abschlusseintrag suchen (falls vorhanden).
Angenommen, Ihr Beendigungseintrag ist "quit", dann sollten Sie diesen Code versuchen: -
%Vor%Versuchen Sie diesen Code. Ihre Terminzeile sollte von Ihnen eingegeben werden, wenn Sie den Scanner schließen / beenden wollen.
Tags und Links java