Другие языки программирования и технологии

Java ввод данных из консоли

System.out.println("Введите два числа"); a = (double) System.in.read(); b = (double) System.in.read(); Ввожу, например, 1 и 2, а он считывает 49 и 32. 2 и 3 -> 50 и 32 3 и 4 -> 51 и 32 Как-то так. Что делаю неправильно?
Gleb Buranglov
Gleb Buranglov
1 017
Может так проще?

Scanner sc=new Scanner(System.in);
double num1=sc.nextDouble();
double num2=sc.nextDouble();
Виктор Галай
Виктор Галай
9 759
Лучший ответ
50 ето ASCII код символа "2" 32 ето пробел ))

вот наверно то что нужно:
Работа приложения Java с консолью
--------------------------------------------
byte bKbd[ ] = new byte[ 256 ];
int iCnt = 0;
String szStr = "";

Массив байт bKbd заполняется символами, введенными с клавиатуры. В переменную iCnt записывается количество этих символов. И, наконец, в переменной szStr хранится строка, сформированная из массива bKbd.

Ввод символов с клавиатуры выполняется методом read:
try
{
iCnt = System.in.read(bKbd);
}
catch(Exception ex)
{
System.out.println(ex.toString());
}

Пользуясь этой информацией, мы формируем из массива введенных символов текстовую строку класса String:
szStr = new String(bKbd, 0, iCnt);

Далее мы удаляем из строки все служебные символы (в частности, символы возврата каретки и перевода строки) :
szStr = szStr.trim();
Денис Панов
Денис Панов
8 290
Если я не ошибаюсь, то System.in.read() считывает код введенного символа. Попробуйте считать число как строку:
try {
BufferedReader Inner = new BufferedReader(new InputStreamReader(System.in));
String JStr = Inner.readLine();
} catch (IOException eX) {}
...

А потом, пропарсить ее:

try {
int a = Integer.parseInt(JStr);
} catch (NumberFormatException eX) {}
Petr. Katkov
Petr. Katkov
1 623
Создай объект типа BufferedReader, и с помощью него вводи, самый топ способ. всегда им пользуюсь
Создаём объект
BufferedReder reader= new BufferedReader(new InputStreamReader(System.in));
У объекта одна особенность, он считывает только строки на сколько я знаю. Считывание строки с консоли:
String s = reader.readLine();
Чтобы переделать строку в число
int a = Integer.parseInt(s);
Или сразу пишешь в сокращённой форме
int a = Integer.parseInt(reader.readLine());
Очень полезная штука:

Класс Scanner имеет еще ряд методов, которые позволяют получить введенные пользователем значения:

next(): считывает введенную строку до первого пробела

nextLine(): считывает всю введенную строку

nextInt(): считывает введенное число int

nextDouble(): считывает введенное число double

hasNext(): проверяет, было ли введено слово

hasNextInt(): проверяет, было ли введено число int

hasNextDouble(): проверяет, было ли введено double
Если я не ошибаюсь, то System.in.read() считывает код введенного символа. Попробуйте считать число как строку:
try {
BufferedReader Inner = new BufferedReader(new InputStreamReader(System.in));
String JStr = Inner.readLine();
} catch (IOException eX) {}
...

А потом, пропарсить ее:

try {
int a = Integer.parseInt(JStr);
} catch (NumberFormatException eX) {}
смайлики