gpt4 book ai didi

java - 测验代码中空白答案的异常处理,java

转载 作者:行者123 更新时间:2023-12-01 19:43:52 26 4
gpt4 key购买 nike

我刚刚开始学习 Java,我正在做一个测验,我想对可能发生的一些错误使用异常处理。1. 用户只能回答 A、B、C,如果他们回答 D 或任何其他字母,则必须有异常(exception),然后他们可以重试2. 用户不应该有空白答案,如果他们在问题上留下空白,则一定有异常(exception),然后他们可以重试

建议使用 switch case 吗? (这就是我所做的)

try {
String answer1 = scan.next();

switch(answer1.toUpperCase()) {
case "A":
System.out.println("Wrong, correct answer is B");
break;
case "B":
score++;
System.out.println("Correct!");
break;
case "C":
System.out.println("Wrong, correct answer is B");
break;
default:
throw new InputMismatchException();
}
} catch (InputMismatchException ex) {
System.out.println("INVALID! Must be letters only, Try again");
}

我将如何处理其他异常?当我尝试在用户输入 d 时运行它时,它也会打印 Invalid must be letters only .. 谢谢:)

最佳答案

switch 语句很好,但是您滥用了异常。异常(exception)是针对异常(exception)的情况。用户输入无效输入并不是异常行为。这是非常预期的行为;用户都是愚蠢的。

如果您只想打印错误,可以将 println 移至默认情况。

如果你想给用户第二次机会,常见的解决方案是 do-while 循环:

boolean isValidInput = true;
do
{
String answer1 = scan.next();
switch(answer1.toUpperCase()) {
case "A":
System.out.println("Wrong, correct answer is B");
isValidInput = true;
break;
case "B":
score++;
System.out.println("Correct!");
isValidInput = true;
break;
case "C":
System.out.println("Wrong, correct answer is B");
isValidInput = true;
break;
default:
System.out.println("INVALID! Must be letters only, Try again");
isValidInput = false;
}
}
while (!isValidInput);

还值得注意的是,鉴于 A 和 C 的行为是相同的,您可以合并这些情况:

case "B":
score++;
System.out.println("Correct!");
isValidInput = true;
break;
case "A":
case "C":
System.out.println("Wrong, correct answer is B");
isValidInput = true;
break;

关于java - 测验代码中空白答案的异常处理,java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54293143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com