import java.util.InputMismatchException;
import java.util.Scanner;public class HelloWorld {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int counter=0;
int[] num=new int[2];
while(true){
try{
System.out.println("请输入数字"+(counter+1)+":");
num[counter]=in.nextInt(); //A
}catch(InputMismatchException e){
System.out.println("数字格式错误!");
counter--;
}
counter++;
if(counter==2)
break;
}
System.out.println("相减结果为:"+(num[0]-num[1]));
}
}
这个段代码是联系异常处理的。现在的问题是,在A行出如果第一次出入错数据,比如是8Y,就陷入死循环了。也就是不停的输出数字格式错误。
初步怀疑,是在A行发生异常时,错误的数据还保存在scanner类型的in中。造成在第一次输入错误以后,每当执行到A行,in就把错误的数据赋给数组,再次出发异常,就这么死循环了。
现在求一种方法,能清空scanner类型的in中已经读取的数据,请高手赐教!
这个提到scanner抛出InputMismatchException异常后, scanner 并不会跳过该异常字符,因此需要通过其它方法来跳过该字符。
in.next();
因为输入的数据是错位的,就读取出来,不用就是啦