[英]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.