Робота зі сканером в Java (введення і виведення данних)

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Scanner Vertex Academy

 

 

 

 

 

Scanner2 Vertex Academy

Пропонуємо згадати 2 приклади з життя, які будуть доречними для вивчення цієї теми.

  1. Коли ми подорожуємо, в аеропорту наш багаж пропускають через стрічку зі сканером. Ось вона була наша сумка на вході. Просканував сканер сумку – і працівник аеропорту чітко знає, що ми веземо в ній.
  2. Так само працює сканер у магазинах. Ось був штрих-код на вході, відсканував штрих-код продавець і тепер знає все про продукт, який значиться під цим штрих-кодом.

Чимось схожі завдання є й у світі програмування на Java. Наприклад, часто потрібно виконати такі завдання:

  • Користувач ввів у консолі якесь число. А програма повинна зчитати з консолі, яке ж число ввів користувач.
  • Користувач ввів у консолі якесь слово. А програма повинна зчитати з консолі, яке ж слово ввів користувач.

Для вирішення таких завдань у Java використовується сканер (від англ. Scanner).  Запам'ятайте: якщо щось ввели в консолі, а нам треба зчитати, що ж саме ввели, використовуємо сканер.

Отже, розглянемо кілька прикладів коду, після яких Ви:

  1. Зрозумієте на практиці, як працює сканер. Усього в статті буде 6 прикладів коду. Рекомендуємо всі приклади коду запускати на своєму комп'ютері і на практиці вивчати, як це працює.
  2. Засвоїте 4 методи сканера:

next ();

nextLine ();

nextInt ();

nextDouble ();

Методи – це, грубо кажучи, дії, які може виконувати Scanner. Насправді методів у сканера набагато більше. Але на цьому етапі Вам буде достатньо цих 4 методів. Ну що, поїхали!!!


Приклад №1 – з методом nextInt ()

Припустимо, ми хочемо, щоб користувач ввів у консоль будь-яке ціле число від 1 до 10, а програма вивела йому відповідь, яке саме число він ввів.

Оскільки нам необхідно немов "зісканувати", яке число ввів користувач, усе логічно – нам знадобиться сканер. Нижче наводимо рішення і коментарі до рішення.

Рішення:

Якщо Ви спробуєте запустити цей код на своєму комп'ютері, то в консолі Ви побачите: 

Введіть будь-яке ціле число від 1 до 10:

Потім, якщо Ви, наприклад, вводите число 5, то в консолі буде:

Введіть будь-яке ціле число від 1 до 10: 5
Ви ввели число 5

Коментарі:

У статті "Що таке бібліотека Java?" ми з Вами розібралися, що в Java є величезна бібліотека протестованого коду – це вже готові рішення до багатьох завдань, з якики мають справу програмісти в своїй щоденній роботі. Також ми говорили про різні пакети, класи і методи. Так ось, зараз ми будемо з Вами працювати з пакетом java.util. У цьому пакеті є клас Scanner. І в нього є методи (дії), які дозволяють працювати з введенням і виведенням інформації в консоль.

Але, для того, щоб ми змогли використовувати в нашому коді клас Scanner, нам необхідно зробити 3 кроки.

КРОК №1: Обов'язково прописати ось такий рядок у коді

Навіщо ми прописали цей рядок? За допомогою цього рядка ми імпортували з пакета java.util клас Scanner. Якби ми забули це написати, сканер б просто не працював. Також зверніть увагу, де ми прописали цей рядок.

Далі ми попросили користувача ввести будь-яке ціле число від 1 до 10. Для цього написали

КРОК №2: Оголосити сканер

Scanner2 Vertex Academy

  1. За допомогою Scanner scan ми вказали, що змінна буде мати ім'я scan і буде належати до класу Scanner. Обов'язково перед ім'ям змінної пропишіть слово Scanner. А саму змінну можете називати, як хочете. Не обов'язково scan.
  2. Потім пишемо = new Scanner (System.in);

Коли Ви дійдете до теми класів, Ви набагато краще зрозумієте цю конструкцію. Зараз достатньо цього для розуміння.

КРОК №3: Зчитати число з консолі

  1. За допомогою int number ми оголосили змінну з ім'ям number, що належить до типу int. Чому саме тип int ми вибрали для змінної? Тому що за умовою задачі користувач повинен ввести будь-яке ціле число від 1 до 10. Відповідно, ми очікуємо, що введене користувачем число буде цілим. І тому для змінної number вибрали цілочисельний тип int.
  2.  = scan. nextInt ();  метод сканера nextInt () відповідає за те, щоб зчитати введене користувачем ціле число з консолі. Тобто за допомогою scan.nextInt () ми зчитуємо введене ціле число з консолі і присвоюємо його змінній number.

Усе, тепер у змінної number у нас буде те число, яке введе користувач. Ура!

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


Приклад №2 – з методом nextInt ()

Попросіть користувача ввести 2 будь-яких цілих числа.а. Після цього необхідно вивести в консоль суму цих 2 чисел.

Рішення:

Якщо Ви спробуєте запустити цей код на своєму комп'ютері, то в консолі Ви побачите: 

Введіть 2 будь-яких цілих числа:

Потім, якщо Ви, наприклад, вводите число 1 і число 2, то в консолі буде:

Введіть 2 будь-яких цілих числа:
1
2
3

Коментарі:

Знову зробили 3 кроки для підключення сканера.

КРОК №1: Імпортували сканер із пакета java.util

Потім попросили користувача ввести будь-яких 2 цілих числа

КРОК №2: Оголошуємо сканер

  1. За допомогою Scanner k ми вказали, що змінна буде мати ім'я k і буде належати до класу Scanner. Обов'язково перед ім'ям змінної прописати слово Scanner. А саму змінну можете називати, як хочете. Необов'язково k.
  2. Потім пишемо = new Scanner (System.in);

КРОК №3: Зчитали число з консолі

Причому зробили це 2 рази, тому що ми попросили користувача ввести 2 числа.

Усе тепер у змінній number 1 і змінної number2 у нас будуть ті числа, які введе користувач..

І потім на екран вивели суму number1 і number2:


Приклад №3 – з методом nextLine ()

Припустимо ми хочемо, щоб користувач уводив у консоль будь-яке слово або фразу, а ми могли б вивести йому, яке слово або фразу він ввів.

Решение:

Якщо Ви спробуєте запустити цей код на своєму комп'ютері, то в консолі Ви побачите: 

Введіть будь-яке слово або фразу:

Потім, якщо користувач введе, наприклад, фразу "Я повелитель Сканера", то в консолі буде таке:

Введіть будь-яке слово або фразу:
я повелитель Сканера
я повелитель Сканера

Коментарі:

Знову зробили 3 кроки для підключення сканера.

КРОК №1: Імпортували сканер із пакета java.util

Потім попросили користувача ввести будь-яке слово або фразу

КРОК №2: Оголосили сканер

КРОК №3: Зчитали слово або фразу з консолі

  1. За допомогою String phrase1 ми оголосили змінну з ім'ям phrase1, що належить до типу String. Чому саме тип String ми вибрали для змінної? Тому що за умовою задачі користувач повинен ввести слово або фразу. Відповідно, ми очікуємо, що користувач введе слово або фразу. І тому для змінної phrase1 ми вибрали тип String.
  2.  = sc. nextLine (); відповідає за зчитування введеного користувачем слова або фрази з консолі. Тобто за допомогою метода nextLine () ми зчитуємо введене слово або фразу з консолі та присвоюємо його змінній phrase1.

Тепер у змінній phrase1 у нас буде те слово або фраза, які введе користувач..

Зверніть увагу: для цілих чисел, як у прикладі №1 і №2, ми використовували метод nextInt (); . Оскільки тут ми очікуємо не ціле число, а те, що користувач введе (слово або фразу), використовуємо метод nextLine ();

І далі виводимо в консоль слово або фразу, які ввів користувач:


Приклад №4 – з методом nextLine ()

Припустимо ми хочемо, щоб користувач уводив у консоль відразу кілька слів або фраз, а ми могли вивести для нього одним рядком, що він ввів.

Рішення:

Якщо Ви спробуєте запустити цей код на своєму комп'ютері, то в консолі Ви побачите: 

Введіть будь-які 2 слова або фразу:

Потім, якщо, наприклад, користувач вводить фразу "Я обожнюю" і потім слово "Java", то в консолі буде таке:

Я обожнюю
Java
Я обожнюю Java

Коментарі:

Знову зробили 3 кроки для підключення сканера.

КРОК №1: Імпортували сканер із пакета java.util

Потім попросили користувача ввести будь-які 2 слова або фразу

КРОК №2: Оголосили сканер

КРОК №3: Зчитали слово або фразу з консолі

  1. За допомогою String phrase1  і String phrase2  ми оголосили змінні з ім'ям phrase1 і phrase2, що належать до типу String. Чому саме тип String ми вибрали для змінних? Тому що за умовою задачі користувач повинен ввести 2 будь-які слова або фразу. Відповідно, ми очікуємо, що користувач введе 2 слова або фразу. І тому для змінних phrase1 і phrase2 ми вибрали тип String.
  2.  = sc. nextLine (); відповідає за те, щоб зчитати введене користувачем слово або фразу з консолі. Тобто за допомогою метода nextLine () ми зчитуємо введене слово або фразу з консолі і присвоюємо його в змінні phrase1 і phrase2.

І далі вивели в консоль 2 слова або 2 фрази, які ввів користувач:

Зверніть увагу: між phrase1 і phrase2 ми додали "". Якби ми це не зробили, у консоль було б виведено:

Я обожнюю
Java
Я обожнююJava


Приклад №5 – з методом next ()

Припустимо, Ви хочете, щоб користувач ввів будь-яке слово або фразу. І при цьому, щоб програма вивела в консоль все до першого пробілу.

Наприклад, якщо користувач введе "Робота зі сканером – це круто", програма прочитає тільки слово "Робота". Тому що перший пробіл з'являється після слова "робота".

Або якщо користувач, наприклад, введе "Я люблю Java", програма прочитає тільки слово "Я". Тому що перший пробіл з'являється після слова "Я".

Загалом, логіку Ви зрозуміли. Дивимося, як це буде в коді.

Рішення:

Якщо Ви спробуєте запустити цей код на своєму комп'ютері, то в консолі Ви побачите таке: 

Введіть будь-яке слово або фразу:

Потім, якщо користувач, наприклад, вводить фразу "Я повелитель Сканера", у консолі буде:

Введіть будь-яке слово або фразу:
я повелитель Сканера
я

Коментарі:

Знову зробили 3 кроки для підключення сканера.

КРОК №1: Імпортували сканер із пакета java.util

КРОК №2: Оголосили сканер

Потім попросили користувача ввести будь-які 2 слова або фразу

КРОК №3: Зчитали слово або фразу з консолі

  1. За допомогою String phrase1 ми оголосили змінну з ім'ям phrase1, що належить до типу String. Чому саме тип String ми вибрали для змінної? Тому що за умовою задачі користувач повинен ввести слово або фразу. Відповідно, ми очікуємо, що користувач введе слово або фразу. І тому для змінної phrase1 ми вибрали тип String.
  2.  = sc. next (); зчитує введене користувачем слово або фразу з консолі до першого пробілу. Тобто за допомогою метода next () ми зчитуємо введене слово або фразу з консолі до першого пробілу і присвоюємо його в змінну phrase1.

Тепер у змінної phrase1 у нас буде все, що буде до першого пробілу.

І далі виводимо в консоль те, що буде до першого пробілу.


Приклад №6 – з методом nextDouble ()

Припустимо Ви хочете, щоб користувач ввів будь-яке дробове число. А програма повинна зчитати, яке ж число ввів користувач, і вивести в консоль.

Рішення:

Якщо Ви спробуєте запустити цей код на своєму комп'ютері, то в консолі Ви побачите таке: 

Введіть будь-яке дробове число:

Потім, якщо Ви, наприклад, вводите число 2,0, у консолі буде:

Введіть будь-яке дробове число:
2,0
Ви ввели число 2.0

Коментарі:

Bug Vertex Academy

УВАГА – БАГ!!!

Зверніть увагу, що всі числа типу double завжди пишуться в коді в форматі 2.0. Тобто через крапку, а не через кому.

А коли ми вводили число типу double в консолі, ми спеціально ввели в форматі 2,0 - через кому.. При цьому програма вивела нас в правильному форматі 2.0 - "Ви ввели число 2.0"

Це баг. Просто потрібно запам'ятати, що коли Ви вводите число типу double в консолі, треба його вводити через кому. Якби Ви ввели число в консоль у форматі 2.0, програма видала б Вам помилку!

У коді ми знову зробили 3 кроки для підключення сканера.

КРОК №1: Імпортували сканер із пакета java.util

Потім попросили користувала ввести будь-яке дробове число

КРОК №2: Оголосили сканнер

КРОК №3: Зчитали число з консолі

  1. За допомогою double number ми оголосили змінну з ім'ям number, що належить до типу double. Чому саме тип double ми вибрали для змінної? Тому що за умовою задачі, користувач повинен ввести будь-яке дробове число. Відповідно, ми очікуємо, що введене користувачем число буде дробовим. І тому для змінної number вибрали тип double.
  2.  = scan. nextDouble ();  метод сканера nexDouble () відповідає за те, щоб зчитати введене користувачем дробове число з консолі. Тобто за допомогою scan.nextDouble () ми зчитуємо введене дробове число і присвоюємо його змінній number.

Усе, тепер у змінній number у нас буде те число, яке введе користувач.

Потім нам потрібно було вивести введене користувачем число в консоль, і ми це зробили за допомогою


 ПІДСУМУЄМО

Щоб використовувати сканер, потрібно зробити 3 кроки:

Крок №1: Зробити імпорт сканера із пакета java.util

Крок №2: Оголосити сканер. Наприклад:

Крок №3: Викликати відповідний метод для зчитування з консолі. Наприклад:

Методи сканера, які ви вже знаєте:

next (); - зчитує введений рядок до першого пробілу

nextLine (); - зчитує весь введений рядок

nextInt (); - зчитує введене число int

nextDouble (); - зчитує введене число double

Також пам'ятаємо, що, використовуючи метод nextDouble () для дробових чисел, числа в консолі вводимо через кому, а не через крапку. Наприклад: 7,5

 

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr
Самоучители--узнать детальнее--