What's the difference between next() and nextLine() methods from Scanner class?
В чем разница между методами next() и nextLine() из класса Scanner?
В чем основное различие между next() и nextLine()? Моя основная цель - прочитать весь текст, используя Scanner который может быть "подключен" к любому источнику (файлу, например).
Какой из них я должен выбрать и почему?
Переведено автоматически
Ответ 1
Я всегда предпочитаю считывать входные данные с помощью nextLine(), а затем анализировать строку.
Использование next() вернет только то, что стоит перед разделителем (по умолчанию используется пробел). nextLine() автоматически перемещает scanner вниз после возврата текущей строки.
Полезным инструментом для синтаксического анализа данных из nextLine() было бы str.split("\\s+").
Stringdata= scanner.nextLine(); String[] pieces = data.split("\\s+"); // Parse the pieces
Для получения дополнительной информации о классе Scanner или классе String обратитесь к следующим ссылкам.
next() может считывать входные данные только до пробела. Он не может прочитать два слова, разделенные пробелом. Кроме того, next() помещает курсор в ту же строку после считывания входных данных.
nextLine() считывает входные данные, включая пробелы между словами (то есть считывает до конца строки \n). Как только входные данные прочитаны, nextLine() помещает курсор в следующую строку.
Для чтения всей строки вы можете использовать nextLine().
Ответ 3
Из JavaDoc:
A Scanner разбивает входные данные на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу.
next(): Находит и возвращает следующий полный токен из этого сканера.
nextLine(): Продвигает этот сканер дальше текущей строки и возвращает пропущенный ввод.
Итак, в случае "small example<eol>text"next() должно возвращаться "small" и nextLine() должно возвращаться "small example"
Ответ 4
Ключевым моментом является определение того, где метод остановится и где будет находиться курсор после вызова методов.
Все методы будут считывать информацию, которая не содержит пробелов между позицией курсора и следующими разделителями по умолчанию (пробел, табуляция, \n - создаются нажатием Enter). Курсор останавливается перед разделителями, за исключением nextLine(), который считывает информацию (включая пробелы, созданные разделителями) между позицией курсора и \n, а курсор останавливается после \n .