Ви можете вирішити цю проблему "захоплення введення клавіатури по одному знаку за часом" дуже просто. Без необхідності використовувати Scanner all, а також не очищаючи вхідний буфер як побічний ефект, використовуючи це.
char c = (char)System.in.read();
Якщо все, що вам потрібно, - це той самий функціонал, що і функція "getChar ()" мови C, тоді це буде чудово. Велика перевага "System.in.read ()" полягає в тому, що буфер не очищається після кожного перезавантаження. Отже, якщо вам все-таки потрібні всі введення користувачів, ви можете все-таки отримати решту з буфера введення. "char c = scanner.next().charAt(0);"
Спосіб робить захопити напівкокс , але очистить буфер.
// Java program to read character without using Scanner
public class Main
{
public static void main(String[] args)
{
try {
String input = "";
// Grab the First char, also wait for user input if the buffer is empty.
// Think of it as working just like getChar() does in C.
char c = (char)System.in.read();
while(c != '\n') {
//<do your magic you need to do with the char here>
input += c; // <my simple magic>
//then grab the next char
c = (char)System.in.read();
}
//print back out all the users input
System.out.println(input);
} catch (Exception e){
System.out.println(e);
}
}
}
Сподіваюся, це корисно, і удачі! PS Вибачте, я знаю, що це старіший пост, але я сподіваюся, що моя відповідь принесе нове розуміння і могла б допомогти іншим людям, які також мають цю проблему.