如果存在InputMismatchException,为什么此代码会继续循环?
问题描述:
为什么如果有InputMismatchException,这段代码会继续循环? 当你输入一个零时,catch
可以工作,但是如果你输入一个字符串,循环就会变成无限的。如果存在InputMismatchException,为什么此代码会继续循环?
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);
}
}
答
澄清后,在编辑评论:
扫描仪认为,导致异常的价值,这就是为什么它是在下面的循环再次触发。
要获得你所追求的,你需要重新扫描的内容,并移动到下一个输入,所以改变你的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指令停止重复。
答
要正确得重数量,如何
int result = Integer.parseInt(number)
您创建一个整数对象,如果你的输入可能是10A
,就会抛出NumberFormatException
来吧格式雅编写雅野蛮人 –