Вы можете решить эту проблему "захватом ввода с клавиатуры по одному символу за раз" очень просто. Без необходимости использовать Scanner all, а также без очистки входного буфера в качестве побочного эффекта, используя this.
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 Извините, я знаю, что это старый пост, но я надеюсь, что мой ответ принесет новое понимание и может помочь другим людям, у которых также есть эта проблема.