Рубріки: Теория

Ввод данных с клавиатуры в Java: способы с примерами

Светлана Лазутина

При работе с приложениями или сайтами, пользователям необходимо вводить свои данные: почту, пароль, день рождения и так далее. В Java применяются несколько способов ввода данных с клавиатуры: c помощью метода readLine() класса BufferedReader или метода nextLine() класса Scanner. Разберем подробнее, как работают эти методы.

Метод readLine()

BufferedReader readLine() применяется для чтения одной строки текста, который пользователь ввел с консоли. Конец строки в коде может быть указан как Enter, так и \n\r или EOF — end of file.

BufferedReader readLIne() работает только со строками в коде. А метод Scanner nextLine() считывает и другие типы данных, например, int, long, double, float.

BufferedReader работает немного быстрее по сравнению со Scanner, потому что nextLine() анализирует данные, а readLine() просто считывает последовательность символов.

Так работает readLine():

// Java program to illustrate

// BufferedReader readLine() method
  
import java.io.*;

public class GFG {

    public static void main(String[] args)

    {
        // Read the stream 'demo.txt'

        // containing text

        // "GEEKS"

        // "FOR"

        // "GEEKS"

        FileReader fileReader

            = new FileReader(

                "c:/demo.txt");

        // Convert fileReader to

        // bufferedReader

        BufferedReader buffReader

            = new BufferedReader(

                fileReader);

        while (buffReader.ready()) {

            System.out.println(

                buffReader.readLine());
        }
    }
}

Пользователь пишет:

GEEKS

FOR
GEEKS

И на экран, соответственно, выводится:

GEEKS

FOR
GEEKS

Метод nextLine()

NextLine() в Java применяется для класса Scanner. Этот метод так же, как и readLine(), нужен для получения и чтения данных, написанных пользователем. Чтобы применить nextLine(), в коде нужно прописать объект Scanner. 

Этот метод читает и воспроизводит данные до конца строки. Другими словами, он может считывать информацию до тех пор, пока не начнется новая строка или старая не будет разорвана с помощью  \n или Enter.

Вот как nextLine() работает в Java:

public class Main {
 
   public static void main(String[] args) {
 
       Scanner scanner = new Scanner("Дни бегут, мы выходим в поле,\n" +
               "Птицы в небе и дети в школе,\n" +
               "Шум и пение, тьма и свет,\n" +
               "Сердце новое, смерти нет");
       String s = scanner.nextLine();
       System.out.println(s);
   }
}

Что пишет пользователь:

Дни бегут, мы выходим в поле

Птицы в небе и дети в школе

Шум и пение, тьма и свет

Сердце новое, смерти нет

Что показывает программа: 

Дни бегут, мы выходим в поле

Метод nextLine работает с данными только одной строки, поэтому остальное стихотворение теряется из-за разрыва между предложениями и перехода на новую строчку.

Чтобы показать стих полностью, нужно написать следующий код:

public class Main {

   public static void main(String[] args) {

       Scanner scanner = new Scanner("Дни бегут, мы выходим в поле,\n" +
               "Птицы в небе и дети в школе,\n" +
               "Шум и пение, тьма и свет,\n" +
               "Сердце новое, смерти нет");
       String s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
   }
}

Классы-обертки в Java

Класс-обертка — это класс, объект которого содержит примитивные типы данных. Когда мы создаем объект для класса-обертки, он содержит поле, в котором мы можем хранить примитивные типы данных.

Как работают классы-обертки:

  • Они преобразуют примитивные типы данных в объекты. Это необходимо, когда мы хотим изменить аргументы, передаваемые через метод (поскольку примитивные типы передаются только через value).
  • В пакете java.util классы могут обрабатывать только объекты, и в этом случае помогут обертки.
  • Чтобы работать в коллекциях ArrayList и Vector, потребуются объекты, а не примитивные типы.
  • Классы-обертки необходимы для поддержки синхронизации в режиме многопоточности.

В коде процесс создания классов-оберток выглядят так:

// Java program to demonstrate Autoboxing

import java.util.ArrayList;

class Autoboxing
{
    public static void main(String[] args)
    {
        char ch = 'a';

        // Autoboxing- primitive to Character object conversion

        Character a = ch;

        ArrayList<Integer> arrayList = new ArrayList<Integer>();
  
        // Autoboxing because ArrayList stores only objects

        arrayList.add(25);

        // printing the values from object

        System.out.println(arrayList.get(0));

    }
}

А если нужно совершить обратный процесс и преобразовать класс-обертку в примитивный тип, то придется совершить unboxing или распаковку данных:

// Java program to demonstrate Unboxing

import java.util.ArrayList;

class Unboxing

{
    public static void main(String[] args)

    {
        Character ch = 'a';

        // unboxing - Character object to primitive conversion

        char a = ch;

        ArrayList<Integer> arrayList = new ArrayList<Integer>();

        arrayList.add(24);

        // unboxing because get method returns an Integer object

        int num = arrayList.get(0);
  
        // printing the values from primitive data types

        System.out.println(num);

    }

}

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

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

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024