Вот код:
char side;
char left = '\u2190';
char up = '\u2191';
char right = '\u2192';
char down = '\u2193';
do {
side = (char) System.in.read();
switch (side) {
case 'L':
System.out.println(left);
break;
case 'U':
System.out.println(up);
break;
case 'R':
System.out.println(right);
break;
case 'D':
System.out.println(down);
break;
default:
System.out.println("Неверное значение");
break;
} while (side != 'Q');
Когда ввожу значение, которое есть в case выводит стрелочку, а потом "Неверное значение", где ошибка?
После ввода символа вы жмёте клавишу Enter
, System.in.read()
расценивает это как еще один символ. Также эта функция вызывает исключение IOException
, которое нужно обработать.
В таком случае лучше использовать класс Scanner
. Вот код программы:
char side;
char left = '\u2190';
char up = '\u2191';
char right = '\u2192';
char down = '\u2193';
Scanner scanner = new Scanner(System.in);
do {
side = scanner.next().charAt(0);
switch (side) {
case 'L':
System.out.println(left);
break;
case 'U':
System.out.println(up);
break;
case 'R':
System.out.println(right);
break;
case 'D':
System.out.println(down);
break;
default:
System.out.println("Неверное значение");
break;
}
} while (side != 'Q');
Если вам всё-таки нужно использовать System.in.read()
, то после этого вызовите функцию System.in.skip(1)
Т. е.:
side = (char) System.in.read();
System.in.skip(1);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Предположим, что я ожидаю выполнения некоторого условия A, как тогда это лучше всего реализовать? У меня на уме 2 варианта, но не знаю, какой...