当char没有值时,如何避免StringIndexOutOfBoundsException?

has*_*ame 7 java null char

对不起,如果标题没有意义,但我不知道如何说出来.

问题:

我正在制作一个多选问答游戏,从用户那里获得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)值.我正在寻找的东西将检查响应是否为空,如果是,请回去再次向用户提问.

提前感谢您的任何答案.

Dao*_*Wen 6

您可以使用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,您还可以将该逻辑添加到循环条件中.