bufferedreader java ввод с клавиатуры

как создать сайт на 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

В 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, так как он работает быстрее. В остальном выбор зависит от специфики задачи.

Нужно написать сколько rows / columns , их параметры. И вывести матрицу Транспротованую.

Оно выводит так:

2 ответа 2

Вместо read() используйте readLine()

Функция BufferedReader::read() возвращает не само число, которое вы вводили, а номер символа. Например, для символа ‘1’ вернется 49 , для ‘2’ вернется 50 , и т.п.

А если нужно считать именно как число, то используйте Scanner::nextInt:

PS. вот еще пример — номер символа превращаем в сам символ:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками java или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.11.15.35459

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