Scanner输入的值和接收类型不匹配会抛出异常:
要用异常捕获解决
但是输入过多,每个都捕获,不好,将其封装为一个工具类,直接调用:
public class ScannerUtil {
private static Scanner scanner = new Scanner(System.in);
public static int nextInt() { //判断输入是不是整数
while (true) {
try {
return scanner.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入格式不正确,请重新输入一个整数:");
scanner.next(); // 清除scanner缓存
}
}
}
public static String next() { //判断输入字符串正不正确
while (true) {
try {
return scanner.next().trim();
} catch (InputMismatchException e) {
System.out.println("输入格式不正确,请重新输入一个单词:");
scanner.next(); // 清除scanner缓存
}
}
}
public static double nextDouble() { //判断是不是输入的浮点数
while (true) {
try {
return scanner.nextDouble();
} catch (InputMismatchException e) {
System.out.println("输入格式不正确,请重新输入一个小数:");
scanner.next(); // 清除scanner缓存
}
}
}
}