0Pricing
Java Academy · Урок

Чтение ввода с помощью 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 — локальная установка не требуется.

Все уроки этого курса

  1. Чтение ввода с помощью Scanner
  2. Чтение чисел и строк
  3. Проверка ввода пользователя
  4. Альтернатива BufferedReader
← Назад к Java Academy