Как очистить входной буфер в Java

Для избежания любого нежелательного символа, который был введен в консоли, как \n

мы используем nextInt() или nextLine() и т. д.

Но в этих случаях управление фактически на шаг впереди, оставляя нежелательную строку или что-то в этом роде. Но я хочу удалить или очистить память буфера, в котором система принимает другие нежелательные данные. Например ->

Scanner scan=new Scanner(System.in);
scan.nextInt();
scan.nextline();//this statement will be skipped

потому что система принимает \n в качестве строки рядом с целым числом, заданным в качестве ввода. В этом случае без использования scan.nextLine() я хочу просто очистить / очистить буферную память, где хранилась \n. Теперь, пожалуйста, скажите мне, как удалить буфер входной памяти в Java

Спасибо.:)

2 ответа

Вы можете использовать это, чтобы очистить все существующие данные в буфере:

while(sc.hasNext()) {
    sc.next();
}

Если вы делаете это только для удаления символов новой строки (\n) из ввода, вы можете использовать:

while(sc.hasNext("\n")) {
    sc.next();
}

Если цель состоит в том, чтобы читать только целые числа и пропускать любые другие символы, это будет работать:

while(sc.hasNext() && !sc.hasNextInt()) {
    sc.next();
}

вы можете просто использовать еще один scan.nextLine()прежде чем принимать строку в качестве входных данных.

      Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
scan.nextLine();  // clears the input buffer
String s = scan.nextLine();  // this statement won't get skip

Ссылка: решение этого вопроса о хакерском рейтинге использует ту же идею, которую я предоставил

Другие вопросы по тегам