Как использовать сканер в Java

How Use Scanner Java



Сканер в Java - это класс в пакете java.util. Этот класс предназначен для чтения ввода из строки, клавиатуры, файла или сетевого сокета. Эта статья посвящена только чтению ввода с клавиатуры и отображению результата в окне терминала. Подобные идеи можно использовать для чтения ввода из файла или сетевого канала. Сканер не печатает в окно терминала. Для печати на терминал используйте объект System.out. Этот объект просто использовать для печати на терминал, как показано ниже.

Чтобы использовать класс Scanner, его необходимо сначала импортировать. После этого объект должен быть создан из него. После использования объекта «Сканер» его необходимо закрыть. Объект входного потока, представляющий клавиатуру, - System.in. В сканере есть много методов. В этой статье будут описаны только наиболее часто используемые.







Содержание статьи



Простое использование класса сканера

Следующий код просит пользователя ввести предложение, а затем отображает предложение:



Импортировать java.util.Scanner;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Сканер scanObjзнак равно новыйСканер( Система .в);
Система .из.println('Введите предложение и нажмите Enter:');

Нить приговорзнак равноscanObj.nextLine();
Система .из.println(приговор);

scanObj.близко();
}
}

Первая строка импортирует класс Scanner. В функции main первая строка создает объект сканера, используя объект System.in для клавиатуры. Как только объект сканера создан, он начинает ждать ввода. В следующей строке печатается инструкция, предлагающая пользователю ввести предложение. В следующей строке кода используется метод nextLine () объекта сканера для чтения предложения пользователя после того, как он нажмет Enter. Следующая строка в коде повторяет предложение в окне терминала. Последняя строка закрывает объект сканера.





Разделение строки ввода на значения

Следующий код разбивает строку ввода на слова (токены), используя пробел в качестве разделителя:

Импортировать java.util.Scanner;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Сканер scanObjзнак равно новыйСканер( Система .в);
Система .из.println('Введите строку токенов и нажмите Enter:');

в то время как(scanObj.hasNext()){
Система .из.println(scanObj.следующий());
}

scanObj.близко();
}
}

hasNext () и next () - два других метода объекта сканера. Когда объект сканера читает строку, он ее сохраняет. next () обращается к следующему токену (слову). hasNext () возвращает истину, если есть какой-либо другой токен, к которому еще нет доступа.



К сожалению, пользователь по-прежнему должен вводить ввод для разделения и повторного отображения с помощью этого кода. Чтобы закончить все это, нажмите Ctrl + z, и вы должны вернуться в командную строку.

В приведенном выше коде разделитель разделяет токены в пространстве. Можно использовать другой персонаж. В следующем коде используется запятая. Не забудьте нажать Ctrl + z, чтобы завершить цикл, если вы проверяете код.

Импортировать java.util.Scanner;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Сканер scanObjзнак равно новыйСканер( Система .в);
Система .из.println('Введите строку токенов и нажмите Enter:');

scanObj.useDelimiter(',');

в то время как(scanObj.hasNext()){
Система .из.println(scanObj.следующий());
}

scanObj.близко();
}
}

Если вы протестировали код, вы бы заметили, что пробелы в токенах были включены как часть токенов (вывод). Выражение scanObj.useDelimiter (,); набирается после того, как строка ввода была прочитана; это то, что делает запятую, разделитель.

Чтение и проверка примитивных типов данных

nextBoolean () метод

В следующем коде ожидается, что пользователь введет либо true, либо false без кавычек, а затем нажмите клавишу Enter, если пользователь введет что-нибудь еще, например да или нет, появится сообщение об ошибке.

Импортировать java.util.Scanner;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Система .из.Распечатать(«Вам больше 24? ');
Сканер scanObjзнак равно новыйСканер( Система .в);

логическийблзнак равноscanObj.nextBoolean();
если (бл== правда) {
Система .из.println('Вам больше 24');
}
еще если (бл== ложный) {
Система .из.println('Вам меньше 24 лет');
}

scanObj.близко();
}
}

Поскольку java выдает сообщение об ошибке, если ввод не является точным истинным или ложным, вместо else использовался else if.

Разница между методами print и println в том, что print ожидает ввода в текущей строке, а println ожидает ввода в следующей строке.

nextByte () метод

В наборе символов ASCII символ составляет один байт. Однако с некоторыми наборами восточных символов символ может состоять из более чем одного байта. Независимо от набора символов метод nextByte считывает и проверяет следующий байт ввода. Для этого можно использовать следующий код:

Импортировать java.util.Scanner;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Система .из.Распечатать('Типовой номер<128, press Enter: ');
Сканер scanObjзнак равно новыйСканер( Система .в);

байтbtзнак равноscanObj.nextByte();
Система .из.println(bt);

scanObj.близко();
}
}

Если для этого кода будет введено число больше 127 или буквенный знак, будет выдано сообщение об ошибке.

nextInt () Метод

Следующий целочисленный токен в качестве входных данных также может быть проверен и принят. Можно использовать следующий код:

Импортировать java.util.Scanner;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Система .из.Распечатать('Введите любое целое число:');
Сканер scanObjзнак равно новыйСканер( Система .в);

intна однойзнак равноscanObj.nextInt();
Система .из.println(на одной);

scanObj.близко();
}
}

Начальные и конечные пробелы удалены. Для этого кода будет принято любое целочисленное значение, включая значения больше 127. С помощью этих методов nextXXX () после сбоя проверки выдается сообщение об ошибке.

nextBigInteger () Метод

Кажется, программисты никогда не перестанут придумывать новые вещи. Большое целое число - это целое число, значение которого намного больше, чем у целого числа. Однако в Java его можно читать так же, как и целое число. Следующий код иллюстрирует это:

Импортировать java.util.Scanner;
Импортировать java.math.BigInteger;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Система .из.println('Введите любое целое число для большого целого:');
Сканер scanObjзнак равно новыйСканер( Система .в);

BigInteger на однойзнак равноscanObj.nextBigInteger();
Система .из.println(на одной);

scanObj.близко();
}
}

Обратите внимание на оператор импорта import java.math.BigInteger ;. Также обратите внимание, что тип большого целого числа начинается с верхнего регистра B, а не с нижнего регистра b.

nextFloat () Метод

Следующий токен с плавающей запятой в качестве входных данных также может быть проверен и принят. Можно использовать следующий код:

Импортировать java.util.Scanner;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Система .из.Распечатать('Введите любой Float:');
Сканер scanObjзнак равно новыйСканер( Система .в);

плаватьна однойзнак равноscanObj.nextFloat();
Система .из.println(на одной);

scanObj.близко();
}
}

Пример числа с плавающей запятой - 23,456. Начальные и конечные пробелы удалены.

nextDouble ()

Следующий двойной токен в качестве входных данных также может быть подтвержден и принят. Можно использовать следующий код:

Импортировать java.util.Scanner;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Система .из.Распечатать('Введите любой Double:');
Сканер scanObjзнак равно новыйСканер( Система .в);

двойнойна однойзнак равноscanObj.nextDouble();
Система .из.println(на одной);

scanObj.близко();
}
}

Пример двойного числа 23.456. Число типа double отличается от числа с плавающей запятой, поскольку оно имеет меньшую погрешность. Начальные и конечные пробелы удалены.

nextLine () метод

Метод nextLine () предназначен для строки. Если строка является строкой ввода с клавиатуры после нажатия Enter, она может содержать символ новой строки ‘ n’. Можно использовать следующий код:

Импортировать java.util.Scanner;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Система .из.println('Введите строку, имеющую\n: ');
Сканер scanObjзнак равно новыйСканер( Система .в);

Нить пзнак равноscanObj.nextLine();
Система .из.println(п);

scanObj.близко();
}
}

Обратите внимание, что строковый тип начинается с верхнего регистра S, а не с нижнего регистра s.

Методы nextLine (), hasNext () и next () использовались ранее в этой статье. У сканера есть другие методы и другие примитивные методы данных - см. Ниже.

Назначение ввода переменной

Входные данные могут быть присвоены переменной, как показано в следующем коде:

Импортировать java.util.Scanner;

общественный классКласс{
общественный статический пустотаглавный( Нить []аргументы) {
Сканер scanObjзнак равно новыйСканер( Система .в);

Система .из.Распечатать('Введите имя: ');
Нить имязнак равноscanObj.nextLine();

Система .из.Распечатать('Введите возраст:');
intвозрастзнак равноscanObj.nextInt();

Система .из.Распечатать('Введите зарплату:');
двойнойзарплатазнак равноscanObj.nextDouble();

Система .из.println('Имя: ' +имя+ ', Возраст: ' +возраст+ ', Зарплата: ' +зарплата);

scanObj.близко();
}
}

Заключение

Сканер в Java - это класс в пакете java.util. Этот класс предназначен для чтения ввода из строки, клавиатуры, файла или сетевого сокета. В этой статье основное внимание уделяется чтению ввода с клавиатуры и отображению результата в окне терминала. Подобные идеи можно использовать для чтения ввода из строки, файла или сетевого канала.

Чтобы прочитать всю строку ввода с клавиатуры, используйте метод nextLine (). Строку как строку можно разделить на токены с помощью методов hasNext () и next (), а также цикла while. Разделителем по умолчанию для разделения является пробел, но программист может выбрать другой разделитель. При необходимости не забудьте нажать Ctrl + z, чтобы остановить цикл while. Удаление начальных и конечных пробелов можно выполнить с помощью других схем, не рассматриваемых в этой статье. Проверка токенов также может быть выполнена с использованием других схем, не рассмотренных в этой статье.

Примитивные значения могут быть прочитаны с помощью nextBoolean (), nextByte (), nextInt () и т. Д. Эти методы nextXXX () выполняют проверку, а также удаляют начальные и конечные пробелы.

Сканер Java имеет гораздо больше методов. Однако в этой статье объясняется базовое использование сканера. Выбор токена фактически выполняется с использованием методов регулярных выражений. Использование методов регулярных выражений будет обсуждаться в другой раз.