ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Чтение ввода данных через консоль в Java: класс Scanner

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вам нужно прочитать данные из консоли, используйте класс Scanner и создайте его экземпляр с использованием new Scanner(System.in). Чтобы считать строку, примените метод scanner.nextLine(), а для чтения целочисленного значения используйте scanner.nextInt().

Java
Скопировать код
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Пожалуйста, введите текст: ");
        String text = input.nextLine(); // здесь идет считывание текста
        System.out.println("Вы ввели следующий текст: " + text); // здесь происходит вывод текста
    }
}

Чтобы проверить работу приведенного кода, запустите его, введите текст и нажмите Enter.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Изучаем Scanner: детали и нюансы

Чтение данных различных типов

Вы можете использовать класс Scanner для чтения разнообразных типов данных, в том числе строк и чисел, обращаясь к соответствующим методам.

Java
Скопировать код
Scanner scan = new Scanner(System.in);

// Чтение строки данных, например, имени пользователя
System.out.print("Напишите ваше имя пользователя: ");
String username = scan.nextLine(); // Отлично подобрано имя!

// Чтение целочисленного значения, например, возраста пользователя
System.out.print("Укажите ваш возраст: ");
int age = scan.nextInt();
// Этот шаг очищает буфер ввода
scan.nextLine();

Не забывайте очищать буфер ввода с помощью scan.nextLine(), чтобы предотвратить последующие ошибки при чтении данных.

Обработка исключений с использованием try-catch

Чтобы правильно обработать возможные ошибки, рекомендуется обернуть код, связанный со Scanner, в блок try-catch.

Java
Скопировать код
try {
    // Здесь используется Scanner
} catch (Exception e) {
    System.out.println("Случилась ошибка: " + e.getMessage());
}

Закрывание Scanner после использования

Для освобождения системных ресурсов важно закрыть Scanner после его использования, применив метод scan.close(). Для надежности вы можете использовать блок finally или конструкцию try-with-resources для автоматического закрытия Scanner.

Визуализация

Представьте себе, что Scanner это GPS-навигатор (🗺️), который помогает вам вести путь к нужной точке ввода данных (📍):

Markdown
Скопировать код
Гид (🗺️): Scanner
Старт (🚀): scanner.nextLine() или scanner.nextInt()

Будьте внимательны к ожиданиям пользователя при движении к цели:

Java
Скопировать код
Scanner scanner = new Scanner(System.in); // Включаем наш GPS (🗺️)
System.out.print("Что вы ожидаете: "); // Готовимся к старту (🚀)
String expectations = scanner.nextLine(); // Достигли цели (📍)
System.out.println("Ваши ожидания: " + expectations); // Отмечаем успешное достижение!

Мы успешно реализовали "навигацию" по вводу пользователя, используя наш навигатор!

Повышаем квалификацию: RegEx, синхронизация, настройка разделителей

Проверка данных с использованием RegEx

Применяйте метод next(String pattern) для проверки вводимых данных на соответствие образцам (паттернам).

Java
Скопировать код
System.out.print("Введите ваш email: ");
String email = scan.next("\\S+@\\S+\\.\\S+"); // Таким образом проводится валидация электронной почты!

Использование BufferedReader для управления и синхронизации

BufferedReader предоставляет более контролируемое чтение текста. Используйте его чтобы преобразовывать строки в числовой формат:

Java
Скопировать код
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int number = Integer.parseInt(reader.readLine()); // Попрощайтесь со строками и салютуйте числам!

Настройка разделителей и работа в многопоточных приложениях

Метода useDelimiter() позволяет устанавливать свои разделители для разбиения данных на фрагменты (токены).

Работая с многопоточными приложениями, используйте внешнюю синхронизацию, чтобы обеспечить потокобезопасность Scanner.

Полезные материалы

  1. Scanner (Java Platform SE 8) — Официальная документация Oracle на класс Scanner.
  2. Ввод-вывод информации в Java из командной строки — Руководство по вводу и выводу информации в Java.
  3. Как получить ввод пользователя в Java? – Stack Overflow — Советы от сообщества разработчиков по использованию Scanner.
  4. Класс Scanner в Java – GeeksforGeeks — Подробное руководство об использовании методов класса Scanner.
  5. Класс Scanner в Java | DigitalOcean — Пошаговое руководство по классу Scanner.
  6. Scanner в Java – TutorialsPoint — Обзор класса Scanner с примерами кода.