Was die oben genannten Code tut heikel ist
(char) System.in.read() != 'S'
die .read()
würde
das nächste Datenbyte aus dem Eingabestrom ausliest. der Wert Byte ist r eturned als int
im Bereich 0
zu 255
So werden Sie Ihre Eingabe behandelt wie:
Input : a
Output : Pass #0 // for a
Pass #1 //for Enter
Input : all
Output : Pass #2 // a
Pass #3 //l
Pass #4 //l
Pass #5 // Enter
und in ähnlicher Weise für eine beliebige Zeichenfolge, wenn es S
ein Zeichen enthält
Input : stingWithSHere
Output : Pass #6 //s
Pass #7 //t
Pass #8 //i
Pass #9 //n
Pass #10 //g
Pass #11 //W
Pass #12 //i
Pass #13 //t
Pass #14 //h
und dann endet es. Hoffnung, die Dinge klar aussehen lässt.
Um streng beschränken die Eingabe von dem Benutzer, den Sie stattdessen verwenden können -
new Scanner(System.in).next(".").charAt(0) != 'S'
Mit der aktualisierten Frage, die Verbindung von @ Tom geteilt beantwortet sie für jetzt -
How to get input without pressing enter every time?
Funktioniert gut für mich. Was ist dein erwartetes Ergebnis? Oder sind Sie verwirrt über die doppelte "Pass #" - Ausgabe pro eingegebenem Zeichen? – Tom
Was ist das erwartete Ergebnis? Ich würde erwarten, dass die obige Schleife stoppt nach Eingabe von S. – GhostCat
Ich wollte eine Endlosschleife, die nach dem Drücken von S zu stoppen, so dass ich don t Enter nach bestimmter Ausgabe –