这是涉及尝试/捕获块的家庭作业的一个问题。对于try / catch,我知道您将要测试的代码放在try块中,然后将要响应的代码放在catch块中,但是在这种特殊情况下如何使用它?
用户输入了存储在userIn中的数字,但是如果他输入字母或除数字以外的其他内容,我想抓住它。在try / catch之后,用户输入的号码将用于switch语句中。
Scanner in = new Scanner(System.in);
try{
int userIn = in.nextInt();
}
catch (InputMismatchException a){
System.out.print("Problem");
}
switch(userIn){...
当我尝试编译时,对于与switch语句的开头对应的行号switch(userIn){,它返回未找到的符号。几次搜索后,我发现在try块之外看不到userIn,这可能是导致错误的原因。我如何测试userIn的正确输入以及在try / catch之后switch语句是否看到userIn?
最佳答案
使用类似:
Scanner in = new Scanner(System.in);
int userIn = -1;
try {
userIn = in.nextInt();
}
catch (InputMismatchException a) {
System.out.print("Problem");
}
switch(userIn){
case -1:
//You didn't have a valid input
break;
通过使用类似
-1
的默认值(它可以是正常运行中不会收到的任何输入,您可以检查是否有异常。如果所有int有效,则使用布尔值可以在try-catch块中设置的标志。