对不起,如果标题没有意义,但我不知道如何说出来.
问题:
我正在制作一个多选问答游戏,从用户那里获得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");
}
Run Code Online (Sandbox Code Playgroud)
当然,如果用户没有输入任何内容,程序将永远不会超过第二行代码,因为您无法获取空String的charAt(0)值.我正在寻找的东西将检查响应是否为空,如果是,请回去再次向用户提问.
提前感谢您的任何答案.
您可以使用do-while循环.只需更换
response = input.nextLine().charAt(0);
Run Code Online (Sandbox Code Playgroud)
同
String line;
do {
line = input.nextLine();
} while (line.length() < 1);
response = line.charAt(0);
Run Code Online (Sandbox Code Playgroud)
input.nextLine()当用户输入空白行时,这将继续调用多次,但只要他们输入非空行,它将继续并设置为response等于该非空行的第一个字符.如果要重新提示用户输入答案,则可以将提示添加到循环内部.如果要检查用户是否输入了字母a-d,您还可以将该逻辑添加到循环条件中.