抱歉,如果标题没有意义,但我不知道如何表达。
问题:
我正在制作一个多项选择问答游戏,它可以从用户那里获得 a、b、c 或 d。如果他们按照他们的指示去做,这没有问题,但是如果他们不输入任何内容而只是按回车键,我会得到一个 StringIndexOutOfBoundsException。我明白为什么会这样,但我是 Java 的新手,想不出修复它的方法。
我目前拥有的:
System.out.println("Enter the Answer.");
response = input.nextLine().charAt(0);
if(response == 'a')
{
System.out.println("Correct");
}
else if(response == 'b' || response == 'c' || response == 'd')
{
System.out.println("Wrong");
}
else
{
System.out.println("Invalid");
}
当然,如果用户什么都不输入,程序永远不会通过第二行代码,因为您不能获取空字符串的 charAt(0) 值。我正在寻找的是检查响应是否为空的东西,如果是,请返回并再次向用户提问。
提前感谢您的回答。
最佳答案
您可以使用 do-while 循环。只需更换
response = input.nextLine().charAt(0);
与
String line;
do {
line = input.nextLine();
} while (line.length() < 1);
response = line.charAt(0);
这将在用户输入空行时继续调用 input.nextLine()
多次,但一旦他们输入非空行,它将继续并设置 response
等于该非空行的第一个字符。如果您想重新提示用户回答,则可以将提示添加到循环内部。如果您想检查用户是否输入了字母 a–d,您也可以将该逻辑添加到循环条件中。
关于java - 当 char 没有值时,如何避免 StringIndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13004631/