首先,感谢您阅读这篇文章。
我有这种情况的异常处理,然后再进行切换。异常处理正确结束后,切换代码将在永无止境的循环中执行。如果我评论异常处理部分,然后添加
“选择= scan.nextInt()”代码可以正常工作。但是通过异常处理,永无止境的循环会再次发生。我很确定这全都取决于花括号的位置,但是我无法弄清其中的哪个。
谢谢您的帮助。
导入java.util.Scanner;
主类{
私有(private)静态Scanner扫描仪=新的Scanner(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);
}
}
最佳答案
在switch语句之后selecta
变量永远不会设置为null,并且由于您的输入位于带有selecta == null
条件的块中,因此它永远不会执行并直接返回switch语句,依此类推,依此类推...
将selecta = null
放在switch语句之后,应该就是它。