你会这么好心请帮助我吗?我正在做一个简单的问答游戏,在游戏过程中,要求用户输入答案。它是A,B或C.我想让它包含try / catch异常...

我想要此代码执行的操作是,每当他输入除字符串以外的内容时,都会引发异常(迫使用户再次输入答案)。
这是代码的一部分

Scanner sc = new Scanner(System.in);
String answer = "";
boolean invalidInput = true;

while(invalidInput){
    try {
        answer = sc.nextLine().toUpperCase();
        invalidInput = false;
    }
    catch(InputMismatchException e){
         System.out.println("Enter a letter please");
         invalidInput = true;
    }
}


现在的问题是,如果我输入一个整数,它将不会抛出任何东西。

谢谢

最佳答案

如果数据与预期不符,只需抛出InputMismatchException

Scanner sc = new Scanner(System.in);
String answer = "";
boolean invalidInput = true;
while(invalidInput){
    try {
        answer = sc.nextLine().toUpperCase();
        if (!answer.equals("A") && !answer.equals("B") && !answer.equals("C")) {
            throw new InputMismatchException();
        }
        invalidInput = false;
    } catch (InputMismatchException e) {
        System.out.println("Enter a letter please");
        invalidInput = true;
    }
}


请注意,不必为此类控件引发Exception。您可以直接在if代码中处理错误消息。

10-05 18:07