java在异常处理结束并正确执行后,开关代码将在一个永无止境的循环中执行。
首先,感谢您阅读本文。 我有一个异常处理案例,后面是一个开关。异常处理正确结束后,开关代码将在一个永无止境的循环中执行。如果我评论异常处理部分并添加 “selection=scanner.nextInt()”代码运行良好。但通过异常处理,永无止境的循环再次发生。我很确定这都是关于花括号的位置,但我就是分不清是哪一个。 谢谢你在这方面的帮助
导入java。util。扫描仪
班长{ 专用静态扫描仪=新扫描仪(System.in)
public static void main( String[] args ) {
ToString human = new ToString("John", 30, true);
int selection = 0;
boolean quit = false;
String selecta = null;
String message = "Select option";
while (!quit) {
returnMessage(message);
while (selecta == null) {
try {
selecta = scanner.nextLine();
selection = Integer.valueOf(selecta);
break;
} catch (NumberFormatException e) {
returnMessage("An integer was expected. Please try again.");
selecta = null;
returnMessage(message);
}
}
switch (selection) {
case 1:
System.out.println(human.getAge());
break;
case 2:
System.out.println(human.getName());
break;
case 3:
System.out.println(human.isMan());
break;
case 4:
quit = true;
break;
}
}
}
public static void returnMessage (String message){
System.out.println(message);
}
}
# 1 楼答案
selecta
变量在switch语句之后永远不会被设置为null,而且由于您的输入位于一个带有条件的块中selecta == null
它永远不会执行并直接返回switch语句,依此类推把
selecta = null
放在switch语句之后,应该就是这样