14 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Класс Scanner в Java — описание и пример использования

Класс сканера в Java

Scanner — это класс в пакете java.util, используемый для получения ввода примитивных типов, таких как int, double и т. Д., А также строк. Это самый простой способ чтения ввода в Java-программе, хотя и не очень эффективный, если вам нужен метод ввода для сценариев, где время является ограничением, как в конкурентном программировании.

  • Чтобы создать объект класса Scanner, мы обычно передаем предопределенный объект System.in, который представляет стандартный поток ввода. Мы можем передать объект класса File, если мы хотим прочитать ввод из файла.
  • Чтобы прочитать числовые значения определенного типа данных XYZ, используйте функцию nextXYZ (). Например, чтобы прочитать значение типа short, мы можем использовать nextShort ()
  • Для чтения строк мы используем nextLine ().
  • Чтобы прочитать один символ, мы используем next (). CharAt (0). Функция next () возвращает следующий токен / слово на входе в виде строки, а функция charAt (0) возвращает первый символ в этой строке.

Давайте посмотрим на фрагмент кода для чтения данных различных типов данных.

// Java-программа для чтения данных различных типов с использованием класса Scanner.

public class ScannerDemo1

public static void main(String[] args)

// Объявляем объект и инициализируем

// предопределенный стандартный объект ввода

Scanner sc = new Scanner(System.in);

String name = sc.nextLine();

char gender = sc.next().charAt( 0 );

// Числовой ввод данных

// можно прочитать байты, короткие и плавающие

// используя функции с похожими именами.

int age = sc.nextInt();

long mobileNo = sc.nextLong();

double cgpa = sc.nextDouble();

// Распечатать значения, чтобы проверить, был ли ввод получен правильно.

System.out.println( “Name: ” +name);

System.out.println( “Gender: ” +gender);

System.out.println( “Age: ” +age);

System.out.println( “Mobile Number: ” +mobileNo);

System.out.println( “CGPA: ” +cgpa);

Иногда мы должны проверить, относится ли следующее значение, которое мы читаем, к определенному типу или ввод закончился (обнаружен маркер EOF).

Затем мы проверяем, имеет ли вход сканера нужный нам тип, с помощью функций hasNextXYZ (), где XYZ — это интересующий нас тип. Функция возвращает true, если у сканера есть токен этого типа, в противном случае — false. Например, в приведенном ниже коде мы использовали hasNextInt (). Чтобы проверить строку, мы используем hasNextLine (). Точно так же, чтобы проверить наличие одного символа, мы используем hasNext (). CharAt (0).

Давайте посмотрим на фрагмент кода, чтобы прочитать некоторые числа из консоли и вывести их среднее значение.

Читать еще:  Интеграционные тесты для Java с помощью TestContainers.

// Java-программа для чтения некоторых значений с помощью Scanner
// Класс и напечатать их среднее.

public class ScannerDemo2

public static void main(String[] args)

// Объявляем объект и инициализируем

// предопределенный стандартный объект ввода

Scanner sc = new Scanner(System.in);

// Инициализируем сумму и количество входных элементов

int sum = 0 , count = 0 ;

// Проверяем, доступно ли значение int

// Чтение значения типа int

int num = sc.nextInt();

int mean = sum / count;

System.out.println( “Mean: ” + mean);

Эта статья предоставлена Сукрит Бхатнагар . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Использование класса Scanner в Java — примеры и методы

Это руководство по посвящено использованию класса Scanner в Java пакета java.util. Мы будем показывать базовое применение класса Scanner до самых расширенных функций этого класса, используя примеры.

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

Объявление:
public final class Scanner
extends Object
implements Iterator, Closeable

Конструкторы класса Scanner — public Scanner(Readable source)

Создает новый сканер, который создает значения, отсканированные из указанного источника.

Параметры: source — источник символов, реализующий интерфейс Readable

Не путайте с типом объекта, доступным для чтения в качестве параметра конструктора. Readable — это интерфейс, который был реализован с помощью BufferedReader, CharArrayReader, CharBuffer, FileReader, FilterReader, InputStreamReader, LineNumberReader, PipedReader, PushbackReader, Reader, StringReader.

Это означает, что мы можем использовать любой из этих классов в Java при создании экземпляра объекта Scanner.

public Scanner(InputStream source)

Создает новый сканер, который создает значения, отсканированные из указанного входного потока. Байты из потока преобразуются в символы с использованием кодировки по умолчанию базовой платформы.

Параметры: источник — входной поток для сканирования.

Метод ввода этого конструктора — InputStream. Класс InputStream является одним из классов верхнего уровня в пакете java.io, и его использование будет проблемой.

Однако мы можем использовать подклассы InputStream, как показано ниже. Мы использовали FileInputStream, поскольку он является подклассом InputStream, при его включении проблем не возникнет.

public Scanner(File source) выдает исключение FileNotFoundException

Байты из файла преобразуются в символы с кодировкой по умолчанию базовой платформы.
Параметры: источник — файл для сканирования

Читать еще:  Как сделать скриншот окна с автоскроллом

Этот конструктор очень прост. Просто требует источник файла. Единственной целью этого конструктора является создание экземпляра объекта Scanner для сканирования через файл.

public Scanner(Path source) throws IOException

источник — путь к файлу для сканирования. Для параметра конструктора требуется источник Path, который используется редко.

public Scanner(String source)

Создает новый сканер, который выдает значения, отсканированные из указанной строки.

Источник — строка для сканирования.

Этот конструктор может быть самым простым на практике, поскольку для него требуется только строковый параметр, и он строго используется для сканирования ввода строки.

Scanner в Java для чтения файлов

Считать файл очень легко, используя класс Scanner. Нам просто нужно объявить это с помощью конструктора Scanner, например:

Хитрость в итерации по токену Scanner состоит в том, чтобы применять те методы, которые начинаются с hasNext, hasNextInt и т.д. Давайте сначала остановимся на чтении файла построчно.

В приведенном выше фрагменте кода мы использовали флаг scan.hasNextLine() как средство проверки наличия токена, который в этом примере доступен на входе сканера. Метод nextLine() возвращает текущий токен и переходит к следующему.

Комбинации hasNextLine() и nextLine() широко используются для получения всех токенов на входе сканера. После этого мы вызываем метод close(), чтобы закрыть объект и тем самым избежать утечки памяти.

Считать строку из консоли ввода, используя Scanner Class

Класс Scanner принимает также InputStream для одного из своих конструкторов. Таким образом, ввод можно сделать с помощью:

После помещения в наш объект сканера, у нас теперь есть доступ к читаемому и конвертируемому потоку, что означает, что мы можем манипулировать или разбивать входные данные на токены. Используя богатый набор API сканера, мы можем читать токены в зависимости от разделителя, который мы хотим использовать в конкретном типе данных.

Важные советы

Недавно я обнаружил одну проблему. Допустим, что мы просим пользователя ввести идентификатор сотрудника и имя сотрудника из консоли.

После чего мы будем читать ввод с консоли, используя сканер. Идентификатор сотрудника будет читаться с nextInt(), а имя сотрудника будет читаться как nextLine(). Это довольно просто, но это не сработает.

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

Вводный курс. Язык программирования Java

9. Ввод данных. Класс Scanner

Класс Scanner используется для считывания введенных пользователем данных следующих типов: String, byte, short, int, long, float, double.

Читать еще:  Какие антивирусы используются в современных межсетевых экранах

В Java при работе со строками используется понятие токен. Токен – это подстрока, не содержащая разделителей и ограниченная слева и справа разделителями. Стандартными разделителями являются: пробел ‘ ‘ , символ тубуляции ‘t’ , перевода строки ‘n’ и возврата каретки ‘r’ , например, строка

“Университетский центр Турбо”

содержит три токена:

В этом примере использовался стандартный разделить – пробел. При необходимости можно задать собственный разделить, который доложен иметь тип String .

Вернемся к сканеру. Сканер выполняет поиск токенов во входной строке. Для работы со сканером необходимо создать объект класса Scanner, указав с какими потоками ввода/вывода он будет связан:

  • Стандартный поток ввода – это клавиатура представлен объектом — System.in.
  • Стандартный поток вывода – это дисплей представлен объектом System.out.
  • Потоком ввода может быть файл , например,
  • а также строка, определенная в коде программы, например,

Пример. Создаем объект класса Scanner и связываем его с клавиатурой для ввода данных с клавиатуры:

Scanner scan = new Scanner(System.in);

Класс Scanner имеет следующие основные методы:

  • next() считывает введенную строку
  • nextBoolean() считывает введенное логическое значение
  • nextInt() считывает введенное целое число типа int
  • nextFloat() считывает введенное вещественное число типа float
  • nextDouble() считывает введенное вещественное число типа double
  • nextLine( ) считывает введенную всю строку до символа перехода на новую строку.

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

  • boolean hasNextLine() : вернет true если следующим значением является строка, иначе — false;
  • boolean hasNextInt(): вернет true если значением является значение типа int;
  • boolean hasNextFloat() : вернетtrue если следующим значением является значение типаfloat;

Пример. Чтение целого числа

Пример. Чтение вещественного числа

По умолчанию дробное число вводится через запятую. Если требуется вводить число через точку, необходимо установить локаль:

Пример. Чтение последовательности целых чисел

При вводе числа отделяются между собой нажатием клавиши «Enter» или пробелом. Ввод прервется, если будет введено не целое число.

Пример. Ввод строки

Пример. Обработка строки, заданной в коде программы

Пример. Чтение файла

При использовании кириллицы файл должен иметь кодировку UTF-8.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Статьи c упоминанием слов: