ddjl c rkfdbfnehs java

В Java используются два основных способа ввода данных с клавиатуры:

С помощью метода readLine() объекта, порожденного от класса BufferdReader из пакета java.io.

С помощью nextLine() и других методов объекта, созданного от класса Scanner из пакета java.util.

Однако в обоих случаях изначально используется System.in – объект класса InputStream, присвоенный переменной in, находящейся в классе System пакета java.lang. Данный объект выполняет функцию стандартного потока ввода, т. е. ввода с клавиатуры. (В то время как System.out – стандартный поток вывода.)

В Java объект System.in обеспечивает низкоуровневый ввод, при котором методом read() считываются байты. Например, если ввести «ab» и нажать Enter, будет прочитано три байта. В десятичном представлении значение первого байта будет соответствовать символу «a» по таблице символов, второго – символу «b», третьего – символу перехода на новую строку.

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

Для преобразования байтов в символы, а затем в строки полученное от System.in передают в конструкторы классов-оберток. Обертки используют функционал переданного им объекта, но дополняют его своим.

Первая обертка – класс InputStreamReader, который преобразует набор байтов в символ. Класс BufferedReader буферизует ввод, обеспечивая считывание из потока ввода (клавиатура это или файл – не важно) целых строк, что делает процесс более быстрым.

Выражение BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); есть сокращенная запись от:

В случае Scanner дело обстоит попроще, так как класс может больше:

У сканера есть методы, проверяющие тип вводимых данных (hasNextInt() и т. п.). Несмотря на удобство Scanner, если надо просто считывать строки без их анализа, предпочитают использовать BufferedReader, так как он работает быстрее. В остальном выбор зависит от специфики задачи.

как создать сайт на wordpress, настроить и оптимизировать wordpress

Для получения консольного ввода в классе System определен объект System.in. Однако, непосредственно через объект System.in не очень удобно работать, поэтому, как правило, используют класс Scanner, который, в свою очередь использует System.in (Так сложилось).
Скачать исходники для статьи можно ниже

Итак, для ввода информации с консоли надо сделать:
1. предварительно импортировать класс Scanner

2. создать объект класс Scanner. При создании объекта класса Scanner используется объект in класса System

Если здесь не все понятно не огорчайтесь, все станет намного яснее позже, пока просто запомните

3. Переменной а, типа int присваивается значение. Значение получают при помощи метода nextInt(), который прописан в классе Scanner

Пока просто запомните

4. Необходимо закрыть объект sc

Таким образом, общий код программы выглядит так:

Чтобы получить введенное число, используется метод sc.nextInt(), который возвращает введенное с клавиатуры целочисленное значение.

В классе Scanner имеются еще ряд методов, которые позволяют получать не только целочисленные значения для int переменных. Есть методы, которые позволяют получать значения для других типов переменных. Некоторые из них представлены ниже:

sc.next(); считывает введенную строку до первого пробела;
sc.nextLine(); считывает всю введенную строку;
sc.nextDouble(); считывает введенное число дробного типа.

Похожие записи:

Java Урок 4: Ввод чисел с клавиатуры, System.in : 4 комментария

А как ввести десятичное число

Если я ввожу через double и ввожу например 3.3 то мне выдаёт ошибку

3.3
Exception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at One.project.Shelq.Main.main(Main.java:9)

У нас double вводится через запятую.

//переменную double вводить с точкой, например: 2.5

Для того, чтобы пользователь мог что-то ввести с клавиатуры, существует стандартный поток ввода, представленный объектом System.in. Рассмотрим, как это происходит.

Для ввода данных с клавиатуры в Java используется метод System.in.read() — он возвращает код введенного символа. После его выполнения JVM останавливает программу и ждет пока пользователь введет символ с клавиатуры. Для того, чтобы вывести сам символ на консоль, выполняется его приведение к типу char :

Конечно же, использовать System.in в чистом виде не очень удобно, если нам необходимо ввести не один символ, а целую строку. В этом случае можно воспользоваться классом Scanner . Этот класс находится в пакете java.util , поэтому его надо импортировать:

Методы этого класса позволяют считывать строку, значение типа int или double .

Методы класса Scanner :

hasNextInt() — возвращает true если с потока ввода можно считать целое число.

nextInt() — считывает целое число с потока ввода.

hasNextDouble() — проверяет, можно ли считать с потока ввода вещественное число типа double .

nextDouble() — считывает вещественное число с потока ввода.

nextLine() — позволяет считывать целую последовательность символов, то есть строку.

hasNext() — проверяет остались ли в потоке ввода какие-то символы.

В следующем примере метод hasNextInt() проверяет, ввел ли пользователь целое число. И с помощью метода nextInt() считываем введенное число. Если пользователь ввел строку, то программа выведет на консоль «Вы ввели не целое число»:

Рассмотрим пример, в котором используется метод nextDouble() для считывания дробного числа. Если же пользователь введет строку, то программа завершится с ошибкой времени выполнения. Чтобы этого не происходило, перед вызовом метода nextDouble() , сделайте проверку с помощью метода hasNextDouble() :

Следующий пример использует метод nextLine() для считывания всей строки:

Оцените статью