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

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

当然,如果用户什么都不输入,程序永远不会通过第二行代码,因为您不能获取空字符串的 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/

相关文章:

java - 如果某些 bean 仅在测试模式下存在,如何以正确的顺序初始化 bean?

java - JTextPane 的控制台提示

javascript - 是否可以在 javascript 中检查空内联?

null - null 有害吗?

arrays - 通过在 c 中迭代打印字符

C:为什么这段代码会打印这个?

java - 无法从 START_OBJECT token 中反序列化 java.util.ArrayList 的实例

Java 集合 - 唯一键和唯一值

object - 从 Delphi 中的 Assigned() 链中逃脱

java - 对于(int字符代码: message)