- Класс Scanner в Java: Описание, методы, примеры
- Метод сканера nextInt () в Java с примерами
- Русские Блоги
- [2020.4.1] Использование nextLine, nextInt, next, hasNext, hasNextInt
- Как использовать метод hasNext () при зацикливании
- Русские Блоги
- Разница и использование next (), nextLine () и nextInt () в Java
- Прежде всего, подведем итоги: главное отличие заключается в обработке пространств.
- next () метод:
- nextLine () метод:
- nextInt () метод:
- Вводный курс. Язык программирования Java
- 9. Ввод данных. Класс Scanner
Класс Scanner в Java: Описание, методы, примеры
Scanner это класс в языке Java, который позволяет считывать данные из разных источников. В том числе и с консоли. Сегодня я хочу описать принципы его работы и показать на примере как можно прочитать ввод юзера в Java программу.
Класс сканер был создан для чтения данных из входящих потоков. Это может быть консоль приложения, файл и т.д.
Давайте теперь посмотрим, как его можно использовать чтобы считать пользовательский ввод с консоли и подать данные в программу.
Допустим у нас есть приложение при котором юзеру сначала нужно ввести цифры, а потом текст. Вот что получилось у меня:
В результате запуска приложения:
Как видите, код довольно простой. Чтобы вызвать методы класса Scanner нужно всего лишь написать Scanner scanner = new Scanner(System.in);
Внутри скобок (System.in); я передал систем ин так как хочу чтобы мой сканер считывал данные из консоли.
Чтобы считать данные из файла достаточно передать в скобки new File(“путь_к_файлу”).
В корне проекта я создал текстовый файл test.txt с содержимым:
Вот моя программа, которая считывает строку из файла с помощью класса Scanner:
Если нужно считать из файла больше чем одну строку, то тут уже не обойтись без циклов. Если Вы еще не знакомы с этим понятием — эту часть статьи можно пропустить и приступить к ней после изучения циклов.
В класс Scanner есть метод hasNextLine(), который возвращает true/false в зависимости от того есть ли еще строки в файле. Используя этот метод и цикл можно считать весь файл строка за строкой:
Мой исходный текстовый файл:
А вот результат работы приложения:
Причем программу выше можно немного оптимизировать и добавлять прочитанные строки к одной строке а потом можно вывести все целиком. Или можно как-то обработать строку в дальнейшем.
Это все что я хотел рассказать о классе Scanner. Он станет для Вас удобным инструментом для считывания данных с консоли или файла чтобы писать базовые интерактивные приложения на языке Java.
Я намеренно не стал рассказывать об остальных методах сканера, так как думаю что для новичков этого будет достаточно. Все остальное сможете посмотреть при непосредственном использовании Scanner.
Источник
Метод сканера nextInt () в Java с примерами
Метод nextInt (radix) класса java.util.Scanner сканирует следующий токен ввода как Int. Если перевод выполнен успешно, сканер продвигается дальше соответствующего ввода. Если параметр radix не передан, то он ведет себя так же, как nextInt (radix), где основание предполагается равным основному значению.
Синтаксис:
Параметры: Функция принимает параметр radix, который используется для интерпретации токена как значения Int.
Возвращаемое значение: эта функция возвращает Int, отсканированное с входа.
Исключения: функция выдает три исключения, как описано ниже:
- InputMismatchException: если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона
- NoSuchElementException: выдает, если ввод исчерпан
- IllegalStateException: выдает, если этот сканер закрыт
Ниже программы иллюстрируют вышеуказанную функцию:
Программа 1:
// Java-программа для иллюстрации
// nextInt () метод класса Scanner в Java
// без параметра
public class GFG1 <
public static void main(String[] argv)
String s = «Gfg 9 + 6 = 12.0» ;
// создаем новый сканер
// с указанным объектом String
Scanner scanner = new Scanner(s);
// если следующим является Int,
// печать найдена и Int
System.out.println( «Found Int value :»
// если Int не найден,
// выводим «Not Found:» и токен
System.out.println( «Not found Int value :»
Программа 2:
// Java-программа для иллюстрации
// nextInt () метод класса Scanner в Java
// с параметром
public class GFG1 <
public static void main(String[] argv)
String s = «Gfg 9 + 6 = 12.0» ;
// создаем новый сканер
// с указанным объектом String
Scanner scanner = new Scanner(s);
// если следующим является Int,
// печать найдена и Int
System.out.println( «Found Int value :»
// если Int не найден,
// выводим «Not Found:» и токен
System.out.println( «Not found Int value :»
Программа 3: Чтобы продемонстрировать InputMismatchException
// Java-программа для иллюстрации
// nextInt () метод класса Scanner в Java
// InputMismatchException
public class GFG1 <
public static void main(String[] argv)
String s = «Gfg 9 + 6 = 12.0» ;
// создаем новый сканер
// с указанным объектом String
Scanner scanner = new Scanner(s);
// если следующим является Int,
// печать найдена и Int
// так как значение 60 находится вне диапазона
System.out.println( «Next Int value :»
catch (Exception e) <
System.out.println( «Exception thrown: » + e);
Программа 4: продемонстрировать исключение NoSuchElementException
// Java-программа для иллюстрации
// nextInt () метод класса Scanner в Java
// NoSuchElementException
public class GFG1 <
public static void main(String[] argv)
// создаем новый сканер
// с указанным объектом String
Scanner scanner = new Scanner(s);
// Попытка получить следующее значение Int
// больше, чем сканер
// Следовательно, он сгенерирует исключение
for ( int i = 0 ; i 5 ; i++) <
// если следующим является Int,
// печать найдена и Int
System.out.println( «Found Int value :»
// если Int не найден,
// выводим «Not Found:» и токен
System.out.println( «Not found Int value :»
catch (Exception e) <
System.out.println( «Exception thrown: » + e);
Программа 5: Для демонстрации IllegalStateException
// Java-программа для иллюстрации
// nextInt () метод класса Scanner в Java
// IllegalStateException
Источник
Русские Блоги
[2020.4.1] Использование nextLine, nextInt, next, hasNext, hasNextInt
Эта статья представляет собой краткое изложение точек знаний, которые следует использовать при вводе и выводе, на основе информации из Интернета, а не оригинала.
Следующий класс и метод hasNext будут блокироваться, когда в буфере нет данных. После ожидания ввода следующий класс будет читать, и hasNext вернет true.
- Метод nextLine () возвращает все символы перед «\ n», он может получить строку с пробелами.
- Терминатор метода nextLine () — это просто «\ n» (Съест это «\ n»)
- В следующий раз, когда вы будете использовать nextLine для чтения, nextLine будет напрямую читать допустимые символы, не удаляя символ «\ n» после допустимых символов.
- Next () автоматически удалит пробелы перед допустимыми символами. Next () вернет введенные символы только после того, как будут введены допустимые символы, и строка с пробелами не может быть получена.
- Считайте введенные позже пробел, клавишу TAB или клавишу Enter как разделитель или терминатор (Не будет есть Enter, табуляция и пробелы) 。
- Поэтому, если next () использует символ Enter в качестве конечного символа, а затем использует nextLine () позже, nextLine () получит символ «\ n» после next (). В это время снова используйте nextLine, чтобы получить достоверные данные.
- nextInt()толькоПрочитать значение, В остальном то же, что и в next (). Таким же образом, после того, как next (), nextDouble (), nextFloat (), nextInt () прочитаны, на самом деле есть возврат каретки, который не был прочитан. Если он читается nextLine () в это время, это возврат каретки .
Резюме: Если вы хотите использовать nextLine () после next (), сначала используйте nextLine для удаления «\ n», а затем используйте nextLine для чтения данных. И использование next после nextLine не требует удаления «\ n»
Как использовать метод hasNext () при зацикливании
При обнаружении hasNext () Scanner заблокируется, будет ждать вашего ввода и вернет true после ввода. Посмотрев на jdkapi, вы обнаружите, что этот метод вернет true, если в кеше сканера есть читаемое значение, в противном случае он всегда будет блокироваться, ожидая вашего ввода.。
Итак, вам нужно сначала ввести, а затем отобразить «Пожалуйста, введите», не удивляйтесь, потому что это заблокировано в методе hasNext ().
Когда мы хотим выйти из цикла while () с hasNext в качестве условия, тогда либо консоль вручную вводит ctrl + z, либо while (! sc.hasNext («#»)) По соглашению выход, когда в строке вводится #.
Используйте hasNextInt (), чтобы определить, является ли следующий ввод числом и должен ли он использоваться с методом next ()
Функция hasNextInt () примерно означает, является ли текущий вход маркера сканера int, и не будет автоматически перемещать маркер (Перемещаться только после вызова методом следующего класса)
Например, чтобы понять, является ли текущий ввод числом, если нет, предложите ввести число. Если это следующий код: Если ввод не является числом, он всегда будет выводиться. Введите число.
Источник
Русские Блоги
Разница и использование next (), nextLine () и nextInt () в Java
Next (), nextLine () и nextInt () в пакете Scanner в Java — все методы, используемые для чтения ввода, но между ними есть небольшая разница. Здесь мы проиллюстрируем один за другим:
Прежде всего, подведем итоги: главное отличие заключается в обработке пространств.
next () метод:
результат операции:
Из приведенного выше мы видим, что при использовании метода next () для чтения ввода пространство рассматривается как интервал между двумя строками.
nextLine () метод:
результат операции:
Из приведенного выше мы видим, что при использовании метода nextLine () для чтения ввода пространство используется как часть всей входной строки.
nextInt () метод:
результат операции:
Обратите внимание, что если ввод не типа int, будет сообщено об ошибке:
Это видно из вышеизложенного:
При использовании метода nextInt () способ обработки пробелов аналогичен способу работы с next (). Пробел используется как интервал между двумя входными данными, но его возвращаемое значение имеет тип int.
А при использовании метода nexInt () можно вводить только данные типа int.
Источник
Вводный курс. Язык программирования 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.
Источник