这是涉及尝试/捕获块的家庭作业的一个问题。对于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块中设置的标志。

10-08 18:43