我想要一个会要求用户输入一个字符的扫描仪,但是如果输入了多个字符,它应该再次提示用户只输入一个字符。
这是我目前所拥有的:
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);
唯一的问题是,这是我运行时的输出:
(Player 2) Guess a letter: asfa
(Player 2) Please guess only one letter: a
s
letter: s
你看到第三行了吗?它要求另一个提示。我想摆脱它并让它使用输出中第二行中的字母。有什么想法吗?
最佳答案
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);
同时更改您的 while 循环以仅检查输入有 1 个字符,否则玩家只需按回车键,您的代码就会崩溃,因为输入有 0 个字符。上面的代码也是这样做的。
关于java - 测量扫描仪输入长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17889766/