Всем доброго времени суток!
Подскажите, пожалуйста, почему hasNextы переводят курсор на следующую строку, однако при использовании их в условии цикла while этого не происходит!?
Fixpinger
35 уровень
hasNextInt и другие hasNext'ы переводят курсор на следующую строку
Архивный
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
22 марта 2021, 12:27
hasNext-ы никакие вообще ничего не переводят, они только проверяют, есть ли что-то дальше, не переходя к этому следующему элементу.
Переходят просто next-ы.
Если при этом чередовать использование nextLine после nextInt и любых других nextSomething, то nextLine Будет считывать пустую строку, оставшуюся после считывания числа/boolean/чего-то еще. Чтобы не запутаться, лучше так не делать и считывать все только nextLine() и потом их уже парсить в числа.
Возможно у тебя просто два оператора next в одном цикле, и за каждую итерацию производишь два считывания.
В общем, гадать можно долго, покажи код.
0
Fixpinger
22 марта 2021, 12:50
В условии после проверки на "Не инт" nextLine считывает пустую строку. Как это?
0
Fixpinger
22 марта 2021, 13:00
если при выполнении данного кода ввести в консоль 1 а потом слово "ENTER" (или любое другое) компилятор понимает, что в следующей строке не число и начинает выполнять тело условия, но почему nextLine() возвращает пустую строку???
0
hidden #598481
23 марта 2021, 14:28
Так работает сканер.
У тебя перед введённой строкой остался несчитаннымв потоке System.in перенос строки, поэтому сканер сначала должен считать его, а потом уже перейдет к следующей строке
Подробнее тут https://javarush.com/help/13506#discussion
+1