我写了个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--;
}

}

解决方案 »

  1.   

    逻辑问题 能输出说明bl被assign了 但是i--抵消了i的自增导致无限循环
      

  2.   

    比较少使用Scanner,不熟 public void doSomething(){
    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);
    }