Объясните пожалуйста почему так!
В данном примере всегда срабатывает true, причем не важно какое число я ввожу.
Но!!! если использовать класс Scanner то условия выполняются (true/false) а если беру bufferedreader всегда true!!!
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Scanner sc = new Scanner(System.in);
int y = reader.read();
if (y > 20) {
System.out.println(">20");
} else {
System.out.println("<20");
skvair
10 уровень
Почему всегда true???
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
skvair
11 декабря 2019, 05:04
Всем спасибо, за расьяснение☺️
0
Антон
11 декабря 2019, 04:51
reader.read() - этот метод возвращает код символа Unicode.
Цифры в кодировке Unicode начинаются с 48.
Поэтому всегда true.
+1
JustinianJudge в Mega City OneMaster
11 декабря 2019, 04:51
Для данной задачи, через reader нужно читать так:
ты же используешь метод read().
Один читает 1 (один) символ с буфера.
То есть, если ты введешь -34, метод read() прочитает "-".
Если введешь "20", метод read() прочитает "2"
Но интересно и дальше.
Этот метод возвращает int - кодовое представление символа, в диапазоне 0..65535.
Если ты вводишь числа, то значения будут следующие
соответственно, какое бы число ты не ввел, оно возьмет первый символ, и какое бы это число не было, его код в числовом представлении будет точно больше 20-ти.
Пока про это сильно не заморачивайся, просто запомни код вверху.
Для чтения из буфера используй метод readLine() который читает всю строку, и отдает в виде String
Если нужно получить int, то используй метод где s - это строка с числом
+1