如果存在InputMismatchException,为什么此代码会继续循环?
输入零时,catch
有效,但如果输入字符串,则循环变为无限。
import java.util.*;
public class TryCatch
{
public static void main(String args[])
{
int age, age2, sum;
boolean repeat=true;
Scanner input = new Scanner(System.in);
do
{
try
{
System.out.println("Enter age: ");
age = input.nextInt();
System.out.print("Enter age2: ");
age2 = input.nextInt();
sum = age / age2;
System.out.print(sum);
repeat=false;
}
catch (Exception e)
{
System.out.println("Your error is "+e+"\n Try again");
}
}
while(repeat == true);
}
}
答案 0 :(得分:0)
在评论澄清后编辑:
扫描程序保存导致异常的值,以及在以下循环中再次触发它的原因。
要获得您所寻求的内容,您需要重置扫描仪内容并转到下一个输入,因此请更改您的catch块:
catch (Exception e)
{
System.out.println("Your error is "+e+"\n Try again");
input.reset();
input.next();
}
OLD:
因为当异常发生时(不是输入中的int ),程序会跳过try块中的其余代码(当然还有停止循环的部分),并执行catch块中的代码,它只是打印一条错误消息。
在catch主体中,您需要设置repeat=false;
以使while指令停止重复。
答案 1 :(得分:0)
要正确捕捉错误号码,
怎么样?int result = Integer.parseInt(number)
您创建一个整数对象,如果您的输入可能是10A
,则会抛出一个NumberFormatException