我们知道在使用scanner进行控制台输入时候,使用next()方法输出,但是这种方法存在弊端,比如你使用nextInt()方法,但是输入一个字符串类型,就会抛出InputMisMatchException异常。
首先来看一下scanner在jdk中的一些方法:
我们可以看到基本上每种类型的数据都有对应的方法,如果控制台输入的与你设置的不匹配,就会出现异常。
Scanner sc=new Scanner(System.in);
System.out.println("向控制台输入一个整数类型的数据");
sc.nextInt();
拿上面这个来举例说明,当你在控制台输入时,虽然有提示让用户输入整数类型的数据,但是用户万一输入其他的类型就会抛出异常,这就违反了java的健壮性,因为一点小错误,就导致整个系统都停止了,所以我们需要通过异常处理来解决,那么怎么解决呢
思路:利用try-catch捕获异常,每次输入不匹配的时候我们就抛出一个提示,让其重新输入,直到输入正确的数据类型为止。
import java.util.Scanner;
public class scannerTest {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
while (true) {//设置一个死循环
try {
acceptPrint();//当输入正确数据后,执行break语句,跳出循环
break;
} catch (Exception e) {
input = new Scanner(System.in);
}
}
}
public static void acceptPrint() {
System.out.println("请输入一个整数:");
int temp = input.nextInt();
System.out.println(temp);
}
}
我们运行后发现,如果你输入的不是int型的,就会一直提示让你输入,直到输入正确为止。