我写了个java小程序,我的意图是希望在getNum[i] = sc.nextInt(); 这条语句运行时如果用户输入的不是int型会抛出异常显示错误信息 ,可是我按照如下代码编写后,如果输入错误(比如输入字母)程序进入死循环,无限的显示“只能输入0到9的整数”经调试循环每次经过getNum[i] = sc.nextInt();时都直接略过,我希望异常后可以继续输入,请问如何解决 ,十分感谢! {
int[] getNum = new int[4];
Scanner sc = new Scanner(System.in);
for(int i = 0;i < 4;i++)
{
boolean bl = true; //*********对输入数字的检验*************
try
{
getNum[i] = sc.nextInt();
}catch(Exception e)
{
System.out.print(e.toString());
bl = false;
}
if(getNum[i] >9 || getNum[i] < 0 || !bl)
{
System.out.println("只能输入0到9的整数");
i--;
}
}
int[] getNum = new int[4];
Scanner sc = new Scanner(System.in);
for(int i = 0;i < 4;i++)
{
boolean bl = true; //*********对输入数字的检验*************
try
{
getNum[i] = sc.nextInt();
}catch(Exception e)
{
System.out.print(e.toString());
bl = false;
}
if(getNum[i] >9 || getNum[i] < 0 || !bl)
{
System.out.println("只能输入0到9的整数");
i--;
}
}
Scanner input = new Scanner(System.in);
String s = "";
int sum = 0, tmp = 0, i = 0;
for (i = 0; i < 4; i++) {
s = input.next();
try {
tmp = Integer.parseInt(s);
} catch (Exception e) {
System.out.println("格式不符合 " + "[已经读入" + i + "个数字]"
+ e.getMessage());
i--;
}
sum += tmp;
}
System.out.println("读入了 " + i + " 个数字" + " sum = " + sum);
}