Scanner
Читает ввод по частям: строки целиком (nextLine) или отдельные слова и числа.
Доступно с: Java 5
Синтаксис
public final class Scanner implements Iterator<String>, CloseableПримеры
Чтение строки с клавиатуры. В консоли (пользователь ввёл Oleg):
void main() {
var scanner = new Scanner(System.in);
IO.print("Name: ");
String name = scanner.nextLine();
IO.println("Hi, " + name);
}Результат:
Name: Oleg
Hi, OlegScanner читает не только консоль, но и строку или файл — чтение всех строк до конца:
void main() {
var scanner = new Scanner("first\nsecond\nthird");
int n = 1;
while (scanner.hasNextLine()) {
IO.println(n++ + ": " + scanner.nextLine());
}
}Результат:
1: first
2: second
3: thirdПримечания
nextLine() возвращает строку без символа перевода строки. Если строк больше нет, он бросает NoSuchElementException — проверяйте hasNextLine(). Сканер для System.in создают один раз на всю программу и не закрывают: закрытие сканера закрывает и сам System.in.
Для простого ввода строк в Java 25 короче IO.readln().
См. также
- Scanner.nextInt() — Читает следующее целое число из ввода. Рядом — nextDouble(), next() и hasNextInt().
- IO.readln() — Выводит подсказку и читает строку, которую ввёл пользователь.
- BufferedReader — Читает текст построчно с буферизацией — классический способ обработки больших файлов.
Вопросы и ответы по теме
В учебнике
- Ввод с клавиатуры — Как прочитать ввод пользователя в Java: IO.readln, превращение ввода в число и класс Scanner.