Как полностью очистить объект ввода System.in?
Товарищи, подскажите, пожалуйста, как мне очистить объект ввода System.in? Класс Scanner не рассматриваем. Мне нужно именно с ASCII поработать.
Я хочу зациклить ввод, чтобы если вдруг пользователь ввёл не 1 или 2, то его попросили бы ввести одну из этих цифр заново, и так до тех пор, пока он этого не сделает. Но, очевидно, как только я понимаю, что он ввёл белеберду, мне нужно очистить объект ввода, и всё по новой.
И если в классе Scanner я бы просто использовал .nextLine(), то тут команда System.in.read() извлечёт из этого объекта (не у верен, что правильно выражаюсь) только один символ, а если user ввёл условно "hello", то это уже 5 раз нужно её вызывать; крч я же заранее не знаю, сколько мне потребуется её вызвать, что бы объект System.in оказался пустым.
Как быть?
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException
{
int code;
System.out.print("Введите 1 или 2: ");
while (true)
{
code = System.in.read();
if (code == 49 || code == 50) {
break;
}
else {
//Необходимо очистить поток ввода.
System.out.print("Введите 1 или 2: ");
}
}
System.out.println("Программа завершила свою работу.");
}
}
Ответы (1 шт):
Возможно вам подойдет это:
import java.io.IOException;
public class SystemIn {
public static void main(String[] args) throws IOException {
int code;
System.out.print("Введите 1 или 2: ");
while (true) {
code = System.in.read();
if (code == 49 || code == 50) {
break;
} else {
//Необходимо очистить поток ввода.
System.in.skip(System.in.available());
System.out.print("Введите 1 или 2: ");
}
}
System.out.println("Программа завершила свою работу.");
}
}