|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Класс Scanner / чтение из файла
Время создания: 05.09.2017 23:23
Текстовые метки: code
Раздел: Java - Tutorial - Streams
Запись: xintrea/mytetra_db_mcold/master/base/1504643029m2ppd9p3ar/text.html на raw.githubusercontent.com
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Класс Scanner в Java — описание и пример использования 26/01/2017 javadevbloger Java,Начало работы Продолжаем цикл статей для начинающих материалом о классе Scanner. Сделаем краткий обзор и посмотрим на примере наиболее используемые методы. Краткий обзор класса Scanner в Java Класс Scanner используется для получения (считывания) данных введенных пользователем в виде String, byte, short, int, long, float, double. Сканер выполняет поиск токенов во входной строке. Токен (или маркер) представляет собой серию цифровых или буквенно-цифровых символов, которая заканчивается разделителем. Разделителем может быть символ табуляции, возврат каретки (перевод строки или же просто ‘Enter’), конец файла или пробел. Пример: если пользователем был введен ряд чисел с пробелами между каждым номером, то класс Scanner будет принимать все номера в качестве отдельного токена. В этом случае пробельные символы выступают в качестве разделителей. Пример использования Scanner в Java Класс Scanner предоставляется с множеством конструкторов, например: Java Второй конструктор бросает FileNotFoundException. Давайте рассмотрим академические примеры работы с каждым из них: 1). Считываем примитивные типы данных и строку: Java
Обратите внимание, что при считывании float и double может быть выброшен InputMismatchException. Это говорит о том, что было введено значение, которое не распозналось как float или double. Почему так происходит? Все дело в локали, а еще точнее — в знаке, который отделяет целую часть от остатка. В нашем случае мы вводили значение с запятой: 1,23 и проблем не было, однако попытка ввода такого значения: 1.23 приведет к вышеупомянутой ошибке. Как избежать этого? Достаточно просто указать для Scanner‘а локаль: Java
И теперь можно считывать float и double значения с точкой в виде 1.231. Также ситуации с InputMismatchException можно избежать используя методы:
2). Вторым академическим примером является обработка файла с помощью Scanner Он располагает двумя методами для считывания данных:
Они возвращают true, если в файле есть еще токен. Java
Как видите, классом Scanner очень удобно обрабатывать различные источники информации — будь-то файлы, потоки ввода или строки. Работа со сканером в Java (ввод и вывод данных)
Данная статья:
Предлагаем вспомнить 2 примера из жизни, которые как нельзя кстати будут для изучения данной темы.
Чем то схожие задачи есть и в мире программирования на Java. Например, часто необходимо выполнить такие задачи:
Для решения таких задач в Java используется сканер (от англ. Scanner). Запомните: если что-то ввели в консоли, а нам надо считать что же именно ввели - используем сканер. Итак, рассмотрим несколько примеров кода, после которых Вы:
next (); nextLine (); nextInt (); nextDouble (); Методы - это, грубо говоря, действия, которые может выполнять Scanner. На самом деле методов у сканера намного больше. Но на данном этапе Вам будет достаточно этих 4 методов. Ну что, поехали!!! Пример №1 - с методом nextInt () Допустим, мы хотим, чтоб пользователь ввёл в консоль любое целое число от 1 до 10, а программа вывела ему ответ, какое именно число он ввёл. Поскольку нам необходимо как бы "сосканировать", какое число ввёл пользователь, всё логично - нам понадобится сканер. Ниже приводим решение и комментарии к решению. Решение: Если Вы попробуете запустить этот код на своём компьютере, то в консоли Вы увидите следующее: Введите любое целое число от 1 до 10: Затем, если Вы, например, введёте число 5, то в консоли будет следующее: Введите любое целое число от 1 до 10: 5 Комментарии: В статье "Что такое библиотека Java?" мы с Вами разобрались, что в Java есть огромная библиотека протестированного кода - это уже готовые решения ко многим задачам, которые стоят перед программистами в их ежедневной работе. Также мы говорили о различных пакетах, классах и методах. Так вот, сейчас мы будем с Вами работать с пакетом java.util. В этом пакете есть класс Scanner. И у него есть методы (действия), которые позволяют работать с вводом и выводом информации в консоль. Но чтобы мы смогли использовать в нашем коде класс Scanner, нам необходимо сделать 3 шага. Шаг №1 - обязательно прописать вот такую строчку в коде Зачем мы прописали эту строчку? С помощью этой строчки мы импортировали из пакета java.util класс Scanner. Если бы мы забыли это написать, сканер бы просто не работал. Также обратите внимание где мы прописали эту строчку. Далее мы попросили пользователя ввести любое целое число от 1 до 10. Для этого написали ШАГ №2 - объявить сканер
Когда Вы дойдете до темы классов, Вы намного лучше поймёте эту конструкцию. На данном этапе достаточно этого для понимания. ШАГ №3 - считать число с консоли
Всё, теперь в переменной number у нас будет то число, которое введёт пользователь. Ура! Затем нам нужно было вывести введённое пользователем число в консоль, и мы это сделали с помощью вот этой строчки Пример №2 - с методом nextInt () Попросите пользователя ввести 2 любых целых числа. После этого необходимо вывести в консоль сумму этих 2 чисел Решение: Если Вы попробуете запустить этот код на своем компьютере, то в консоли Вы увидите следующее: Введите 2 любых целых числа: Затем, если Вы, например, введёте число 1 и число 2, то в консоли будет следующее: Введите 2 любых целых числа: Комментарии: Опять сделали 3 шага для подключения сканнера. ШАГ №1: Импортировали сканнер из пакета java.util Затем попросили пользователя ввести любых 2 целых числа ШАГ №2 - объявляем сканер
ШАГ №3 - считали число с консоли Причем сделали это 2 раза, потому что мы же попросили пользователя ввести 2 числа. Всё, теперь в переменной number1 и переменной number2 у нас будут те числа, которые введет пользователь. И затем вывели на экран сумму number1 и number2
Пример №3 - с методом nextLine () Допустим мы хотим, чтобы пользователь вводил в консоль любое слово или фразу, а мы могли бы вывести ему какое слово или фразу он ввёл. Решение:
Если Вы попробуете запустить этот код на своём компьютере, то в консоли Вы увидите следующее: Введите любое слово или фразу: Затем, если, например, пользователь введёт фразу "Я повелитель Сканера", то в консоли будет следующее: Введите любое слово или фразу: Комментарии: Опять сделали 3 шага для подключения сканера. ШАГ №1: Импортировали сканер из пакета java.util Затем попросили пользователя ввести любое слово или фразу ШАГ №2 - объявили сканер ШАГ №3 - считали слово или фразу с консоли
Теперь в переменной phrase1 у нас будет то слово или фраза, которые введёт пользователь. Обратите внимание: для целых чисел, как в примере №1 и №2, мы использовали метод nextInt (); Поскольку здесь мы уже ожидаем не целое число, а то что пользователь введет (слово или фразу), используется метод nextLine(); И далее выводим в консоль слово или фразу, которые ввел пользователь Пример №4 - с методом nextLine () Допустим мы хотим, чтобы пользователь вводил в консоль сразу несколько слов или фраз, а мы могли бы вывести ему одной строчкой, что же он ввёл. Решение: Если Вы попробуете запустить этот код на своём компьютере, то в консоли Вы увидите следующее: Введите любые 2 слова или фразу: Затем, если, например, пользователь введёт фразу "Я обожаю" и затем слово "Java" то в консоли будет следующее: Я обожаю Комментарии: Опять сделали 3 шага для подключения сканера. ШАГ №1: Импортировали сканер из пакета java.util Затем попросили пользователя ввести любые 2 слова или фразу ШАГ №2 - объявили сканер ШАГ №3 - считали слово или фразу с консоли
И далее вывели в консоль 2 слова или 2 фразы, которые ввёл пользователь Обратите внимание: между phrase1 и phrase2 мы добавили " ". Если бы мы это не сделали, в консоль было бы выведено следующее: Я обожаю Пример №5 - с методом next () Допустим, Вы хотите, чтоб пользователь ввёл любое слово или фразу. И при этом, чтобы программа вывела в консоль всё до первого пробела. Например, если пользователь введёт "Работа со сканнером - это круто", программа прочитает только слово "Работа". Потому что первый пробел появляется после слова "работа". Или если пользователь, например, введёт "Я люблю Java", программа прочитает только слово "Я". Потому что первый пробел появляется после слова "Я". В общем, логику Вы поняли. Смотрим как это будет в коде. Решение:
Если Вы попробуете запустить этот код на своём компьютере, то в консоли Вы увидите следующее: Введите любое слово или фразу: Затем, если, например, пользователь введёт фразу "Я повелитель Сканера", в в консоли будет следующее: Введите любое слово или фразу: Комментарии: Опять сделали 3 шага для подключения сканера. ШАГ №1: Импортировали сканер из пакета java.util ШАГ №2 - объявили сканер Затем попросили пользователя ввести любое слово или фразу ШАГ №3 - считали слово или фразу с консоли
Теперь в переменной phrase1 у нас будет всё, что будет до первого пробела. И далее выводим в консоль то, что будет до первого пробела. Пример №6 - с методом nextDouble () Допустим Вы хотите, чтоб пользователь ввёл любое дробное число. А программа должна считать, какое же число ввёл пользователь, и вывести в консоль. Решение: Если Вы попробуете запустить этот код на своём компьютере, то в консоли Вы увидите следующее: Введите любое дробное число: Затем, если Вы, например, введёте число 2,0 - в консоли будет следующее: Введите любое дробное число: Комментарии: ВНИМАНИЕ - БАГ!!! Обратите внимание, что все числа типа double всегда пишутся в коде в формате 2.0. То есть через точку, а не через запятую. А когда мы вводили число типа double в консоли, мы специально ввели в формате 2,0 - через запятую. При этом программа вывела нам в правильном формате 2.0 - "Вы ввели число 2.0" Это баг. Просто нужно запомнить, что когда Вы вводите число типа double в консоли, надо его вводить через запятую. Если бы Вы ввели число в консоль в формате 2.0, программа выдала бы Вам ошибку! В коде мы опять сделали 3 шага для подключения сканера. ШАГ №1: Импортировали сканер из пакета java.util Затем попросили пользователя ввести любое дробное число ШАГ №2 - объявили сканнер ШАГ №3 - считали число с консоли
Всё, теперь в переменной number у нас будет то число, которое введёт пользователь Затем нам нужно было вывести введённое пользователем число в консоль, и мы это сделали с помощью ПОДЫТОЖИМ Чтобы использовать сканер, необходимо сделать 3 шага: Шаг №1: Сделать импорт сканера из пакета java.util Шаг №2: Объявить сканер. Например: Шаг №3: Вызвать соответствующий метод для считывания с консоли. Например: Методы сканера, которые Вы уже знаете: next (); - считывает введённую строку до первого пробела nextLine (); - считывает всю введённую строку nextInt (); - считывает введённое число int nextDouble (); - считывает введённое число double Также помним, что при использовании метода nextDouble () для дробных чисел, числа в консоли вводим через запятую, а не через точку. Например: 7,5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Так же в этом разделе:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|