Освоение Java Scanner: подробное руководство с практическими примерами
Освоение Java Scanner
Класс Scanner в java.util позволяет захватывать ввод из потоков, файлов, строк и консоли. Ниже рассмотрены основные сценарии использования.
Пример 1: чтение полной строки текста
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// Scanner, читающий из стандартного ввода
Scanner input = new Scanner(System.in);
System.out.print("Введите ваше имя: ");
// Читаем всю строку, включая пробелы
String name = input.nextLine();
System.out.println("Меня зовут " + name);
input.close();
}
}
Вывод
Введите ваше имя: Kelvin Меня зовут Kelvin
Строка Scanner input = new Scanner(System.in); создаёт сканер, слушающий клавиатурный ввод. Метод nextLine() потребляет всю строку до перевода строки.
Импорт класса Scanner
Перед использованием Scanner импортируйте его:
import java.util.Scanner;
Создание объектов Scanner
В зависимости от источника ввода инстанцируйте Scanner так:
// Из входного потока (например, System.in)
Scanner sc1 = new Scanner(InputStream input);
// Из файла
Scanner sc2 = new Scanner(File file);
// Из строки
Scanner sc3 = new Scanner(String str);
Ключевые методы Scanner для ввода
Scanner предлагает множество методов для чтения разных типов данных. Справочная таблица:
| Метод | Описание |
|---|---|
nextInt() | Читает int |
nextFloat() | Читает float |
nextBoolean() | Читает boolean |
nextLine() | Читает полную строку текста |
next() | Читает одно слово (до пробела) |
nextByte() | Читает byte |
nextDouble() | Читает double |
nextShort() | Читает short |
nextLong() | Читает long |
Пример 2: использование nextInt()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Введите целое число: ");
int data1 = input.nextInt();
System.out.println("Используя nextInt(): " + data1);
input.close();
}
}
Вывод
Введите целое число: 22 Используя nextInt(): 22
Пример 3: использование nextDouble()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Введите Double значение: ");
double value = input.nextDouble();
System.out.println("Используя nextDouble(): " + value);
input.close();
}
}
Вывод
Введите Double значение: 33.33 Используя nextDouble(): 33.33
Пример 4: использование next()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Введите ваше имя: ");
String value = input.next();
System.out.println("Используя next(): " + value);
input.close();
}
}
Вывод
Введите ваше имя: Jonny Walker Используя next(): Jonny
Обратите внимание: next() останавливается на первом пробеле, поэтому захватывается только имя.
Пример 5: использование nextLine()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Введите ваше имя: ");
String value = input.nextLine();
System.out.println("Используя nextLine(): " + value);
input.close();
}
}
Вывод
Введите ваше имя: Jonny Walker Используя nextLine(): Jonny Walker
В отличие от next(), nextLine() захватывает всю строку, включая пробелы, до символа новой строки.
Рекомендуемое чтение: Java Scanner пропускает nextLine()
Scanner с BigInteger и BigDecimal
Для высокоточных чисел Scanner поддерживает:
- nextBigInteger() — читает
BigInteger - nextBigDecimal() — читает
BigDecimal
Пример: чтение BigInteger и BigDecimal
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Введите большое целое: ");
BigInteger value1 = input.nextBigInteger();
System.out.println("Используя nextBigInteger(): " + value1);
System.out.print("Введите большое десятичное: ");
BigDecimal value2 = input.nextBigDecimal();
System.out.println("Используя nextBigDecimal(): " + value2);
input.close();
}
}
Вывод
Введите большое целое: 987654321 Используя nextBigInteger(): 987654321 Введите большое десятичное: 9.55555 Используя nextBigDecimal(): 9.55555
Как работает Scanner внутренне
Scanner читает целую строку, затем разбивает её на токены, используя пробелы по умолчанию. Каждый токен извлекается соответствующим методом. Например, для ввода He is 22 токены: He, is, 22.
Совет: Токены разделяются пробелами, табуляцией или новой строкой, если не настроен другой разделитель.
java
- Ключевое слово final в Java: переменные, методы и классы
- Оператор instanceof в Java: полное руководство с примерами
- Статические вложенные классы в Java: использование, отличия и примеры
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Паттерн Singleton в Java: как реализовать и безопасно использовать
- Рефлексия в Java: инспекция классов, методов и полей во время выполнения
- Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
- Освоение Java Scanner: подробное руководство с практическими примерами
- Освоение Java Generics: создание переиспользуемого, типобезопасного кода
- Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление