Ну, вы не сказали нам, что такое "rew", и что делает rew.nextInt()
.Возможно ли, что rew.nextInt()
ожидает, пока пользователь нажмет return, но фактически потребляет только один символ ввода - так, чтобы следующий вызов rew.nextLine()
(для имени) сразу же занял остаток этой строки?Я подозреваю, что это то, что происходит, потому что вы используете System.in
- обычно чтение из System.in
дает любой ввод, только когда вы нажимаете return.
(Возможно, это также проблема только в Windows - мне интересно, использует ли он «\ r» из System.in в качестве разделителя, оставляя «\ n» в буфере. Не уверен.)
Для проверкипопробуйте набрать «1 Джон», когда вас спросят, продолжать или нет - я думаю, что в качестве следующего имени будет использоваться «Джон».
По сути, я думаю, что использование Scanner.nextInt()
будут проблемы, когда следующий вызов будет Scanner.nextString()
.Возможно, вам лучше использовать BufferedReader
и повторно вызывать readLine()
, а затем анализировать данные самостоятельно.