测量扫描仪输入长度

Mo2*_*Mo2 3 java input char

我想要一个要求用户输入字符的扫描仪,但是如果输入了多个字符,它应该再次提示用户只输入一个字符.

这是我到目前为止:

System.out.print("(Player 2) Guess a letter: ");
Scanner letterScan = new Scanner(System.in);
while(letterScan.nextLine().length()>1)
{
    System.out.print("(Player 2) Please guess only one letter: ");

    //char inputLetter = letterScan.next().charAt(0);
}
char inputLetter = letterScan.next().charAt(0);
System.out.println("letter: " + inputLetter);
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,这是我运行时的输出:

(Player 2) Guess a letter: asfa
(Player 2) Please guess only one letter: a
s
letter: s
Run Code Online (Sandbox Code Playgroud)

你看到第三行?它要求另一个提示.我想摆脱它,并使其使用输出的第二行中的字母代替.有任何想法吗?

Wil*_*son 5

letterScan.next()在获得正确的行后,该行正在读取其他字符.你需要保存你收到的1个字符的第一个输入,如下所示:

System.out.print("(Player 2) Guess a letter: ");
Scanner letterScan = new Scanner(System.in);
String line = "";
//just check for one character.
while((line=letterScan.nextLine()).length()!=1)
{
    System.out.print("(Player 2) Please guess only one letter: ");
}
char inputLetter = line.charAt(0);
System.out.println("letter: " + inputLetter);
Run Code Online (Sandbox Code Playgroud)

同时更改你的while循环以检查输入是否有1个字符,否则播放器只能按回车键,你的代码会崩溃,因为输入有0个字符.上面的代码也是这样做的.