我想制作一个只接受1-5或9输入的try-catch异常。所以我写了下面的代码。
try {
step1 = scanner.nextInt();
} catch (Exception ex) {
System.out.println("Error! Input accept integers only. Input 1-5 or 9");
System.out.println("");
continue;
}
结果是,如果我输入的数字无效,则会给我一个错误(那是真的)。但是当我输入一个角色时,它给了我一个无限循环。我该如何解决这个问题呢?
答案 0 :(得分:0)
也许你必须在决策之前解析输入。 抱歉我的英语不好,我也不是母语人士。
答案 1 :(得分:0)
因为我不知道你的循环看起来如何,我将在答案中无限循环。在正常情况下,nextInt
方法不会捕获回车符,如果您输入的内容不是数字,则需要调用nextLine
来捕获它。如果你不这样做,如果你使用任何一种只需要nextInt
的循环,你可能会遇到无限循环。这可以解决问题:
while(true) {
int step1;
try {
step1 = s.nextInt();
} catch (InputMismatchException e) {
System.out.println("Error! Input accept integers only. Input 1-5 or 9");
System.out.println("");
} finally { // Use a finally block to catch the carriage return, no matter if the int that got input was valid or not.
s.nextLine();
}
}
答案 2 :(得分:0)
试试这个,进行所有测试
int step1;
while (true)
{
Scanner scanner = new Scanner(System.in);
try {
step1 = scanner.nextInt();
if (((step1>=1) && (step1<=5)) || (step1==9))
// BINGO
break;
}
catch (Exception ex)
{
}
System.out.println("Error! Input accept integers only. Input 1-5 or 9");
System.out.println("");
// it loops ther
}
System.out.println("You are done ! "+step1);