Чтение ввода с помощью Scanner
Читайте ввод пользователя из System.in
«Чтение ввода с помощью Scanner» — бесплатный урок Java Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.
Чтение с клавиатуры
Чтобы считывать то, что вводит пользователь, Java предоставляет класс Scanner в пакете java.util. Его подключают к System.in — стандартному потоку ввода.
Scanner упрощает чтение слов, строк и чисел.
Создание Scanner
Создайте объект Scanner, передав ему System.in. В приведённых здесь примерах используются фиксированные строки, поэтому они запускаются без ввода, но те же методы применимы к вводу с клавиатуры.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("Hello");
String word = scanner.next();
System.out.println(word);
scanner.close();
}
}Чтение отдельного слова
next() считывает один токен, то есть текст до следующего пробельного символа. Пробелы и переводы строк разделяют токены.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("apple banana cherry");
System.out.println(scanner.next());
System.out.println(scanner.next());
scanner.close();
}
}Чтение всей строки
nextLine() считывает всё до конца строки, включая пробелы. Используйте его, когда входные данные содержат несколько слов, которые нужно прочитать вместе.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("John Smith");
String fullName = scanner.nextLine();
System.out.println("Name: " + fullName);
scanner.close();
}
}Проверка наличия дальнейшего ввода
hasNext() возвращает true, пока остаются другие токены. Это позволяет выполнять цикл, пока ввод не будет исчерпан.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("red green blue");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
}
}Чтение строк по очереди
Сочетайте hasNextLine() с nextLine(), чтобы обрабатывать многострочный ввод по одной строке за раз.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("line one\nline two\nline three");
while (scanner.hasNextLine()) {
System.out.println("> " + scanner.nextLine());
}
scanner.close();
}
}Пример с настоящей клавиатурой
Для настоящего пользовательского ввода Вы бы написали приведённые ниже строки. Попробуйте выполнить их локально: программа будет ждать в nextLine, пока Вы не введёте текст и не нажмёте Enter.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name);
scanner.close();
}
}Закрытие Scanner
Вызов close() освобождает ресурс. Более удобный подход — конструкция try-with-resources, которая автоматически закрывает сканер после завершения блока.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner("data here")) {
System.out.println(scanner.next());
}
}
}next и nextLine
Запомните ключевое различие: next() останавливается на пробельном символе и возвращает один токен, а nextLine() считывает остаток текущей строки.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("first second third");
System.out.println(scanner.next());
System.out.println(scanner.nextLine());
scanner.close();
}
}Пользовательские разделители
С помощью useDelimiter можно изменить символ, разделяющий токены. В этом примере значения разделяются запятой, а не пробельными символами.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("a,b,c");
scanner.useDelimiter(",");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
}
}Основы Scanner
Создайте один объект Scanner на основе System.in, используйте next для слов и nextLine для целых строк, выполняйте цикл с семейством методов hasNext и всегда закрывайте сканер.
Быстрая проверка
Проверьте свои знания основ Scanner.
Итоги
Вы научились считывать ввод с помощью Scanner:
- Создавайте его с помощью
new Scanner(System.in) next()считывает слово, аnextLine()— целую строку- Выполняйте цикл с помощью
hasNext()илиhasNextLine() - Закрывайте его с помощью
close()или конструкции try-with-resources useDelimiterизменяет разделитель токенов
Часто задаваемые вопросы
Урок «Чтение ввода с помощью Scanner» бесплатный?
Да — полный текст урока «Чтение ввода с помощью Scanner» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.
Чему я научусь в уроке «Чтение ввода с помощью Scanner»?
Читайте ввод пользователя из System.in Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Чтение ввода с помощью Scanner»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Чтение ввода с помощью Scanner
- Чтение чисел и строк
- Проверка ввода пользователя
- Альтернатива BufferedReader