Как очистить входной буфер в 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
Ссылка: решение этого вопроса о хакерском рейтинге использует ту же идею, которую я предоставил