Как очистить стандартный ввод (термин) в Java?Как очистить стандартный ввод (термин)
Немного истории: Я пишу «рефлекс» программа, алгоритм очень прост:
wait a random amount of time
print "press enter"
read line
Дело в том, если пользователь нажал по ошибке ввести ключ, он будет читайте, чтобы тест был неправильным. Моя цель - исправить эту ошибку. Для этого, я хочу, чтобы алгоритм, как это:
wait a random amount of time
clear stdin
print "press enter"
read line
Но я не могу найти способ сделать это. This post кажется интересным: available
получает количество оставшихся символов и skip
пропустит их. Работает только на бумаге. Если Вы подчеркиваете приложение, нажав несколько раз клавишу ввода, метод available
возвращает
оценку числа байтов, которые можно прочитать (или пропущено) от этого входного потока без блокирования
так что когда-то возвращаемое значение неверно, по крайней мере один возврат каретки остается в буфере, и ошибка все еще здесь.
This solution может сделать трюк, но это зависит от платформы, которого я не хочу быть. Кроме того, вызов системной процедуры с Java - довольно плохая идея.
Чтобы возобновить работу, я хочу очистить стандартный ввод моей программы, но я не хочу ее закрывать и не блокировать свою программу, ожидая ввода пользователем. Мне кажется очень сложной проблемой, так что мне стыдно, если ответ очевиден!
Если вы не хотите принимать коды VT100, у вас нет большого количества вариантов. Но зачем это делать в консоли? Напишите действительно крошечное приложение Swing - проблема решена. –