java - 测量扫描仪输入长度

标签 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);

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

(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/

相关文章:

值大于 127 的 Java 字符通过 tcp 发送

java - JAR 文件未从 MSSQL 存储过程运行?

java - Ant 公然忽略 JAVA_HOME 环境变量

java - 检查Android中的视频有多长?

python input() 在调用 input() 之前采用旧的标准输入

c - C中使用getchar存储用户输入的多个字符

java - 具有以下架构的类的 .yaml 结构应该是什么

c - 如何限制用户在C中输入一位小数点的 float

c - 如何限制C中的scanf函数在输入太长时打印错误?

c - 如何在 C 中对多维字符数组使用 scanf()