Вышеприведенный код делает сложно это
(char) System.in.read() != 'S'
.read()
бы
Читает следующий байт данных из входного потока. значение байта г eturned как int
в диапазоне 0
до 255
Таким образом, ваш вклад рассматриваются как:
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
и аналогично для любой строки, если она не включает в себя персонажу S
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
и то он завершается. Надеюсь, что все станет ясно.
Для строго ограничить ввод от пользователя вы можете использовать вместо этого -
new Scanner(System.in).next(".").charAt(0) != 'S'
С обновленным вопросом, ссылка разделяет @tom отвечает на него сейчас -
How to get input without pressing enter every time?
Прекрасно работает для меня. Каков ваш ожидаемый результат? Или вы сбиты с толку о двойном выходе «Pass #» на введенный символ? – Tom
Каков ожидаемый результат? Я бы ожидал, что вышеуказанный цикл остановится при вводе S. – GhostCat
Мне нужен бесконечный цикл, который останавливается после нажатия S, так что я не должен нажимать ввод после определенного вывода –