繁体   English   中英

无法弄清楚如何捕获InputMismatchException

[英]Cannot Figure out how to catch InputMismatchException

所以这是我当前的捕获InputMismatchException错误的代码

int weapon = 0
   boolean selection = true;
   while(selection) {
    try {
      System.out.println("Pick number 1, 2, or 3.");
      weapon = scan.nextInt(); 
      selection = false;
    } catch(InputMismatchException e) {
        System.out.println("Choose 1,2,3");
        weapon = scan.nextInt();
      }
   }

我试图确保输入的是int而不是其他任何内容。 已经实施的Scanner类,“ scan”将对我起作用。

多谢您的协助!

尝试这个:

int weapon = 0;
   do{
       System.out.println("Pick number 1, 2, or 3.");
       if(scan.hasNextInt()){
           weapon = scan.nextInt();
           break;
       }else{
           System.out.println("Enter an integer only");
           scan.nextLine();
       }
   }while(true);

这将确保它是一个整数,并且会一直询问直到获得它。

首先,您已经有一个循环来提示和扫描所需的int 您无需在异常处理程序中重复该行为。 但是,您要做的就是从扫描仪中丢弃不匹配的令牌,以便扫描新令牌。

其次,您的selection变量似乎是多余的。

看起来这可能会满足您的要求:

int weapon = 0
while(weapon < 1 || weapon > 3) {
    try {
        System.out.println("Pick number 1, 2, or 3.");
        weapon = scan.nextInt(); 
    } catch(InputMismatchException e) {
        //discard the mismatching token
        scan.next();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM