关于Scanner输入的值,如何捕获异常的问题

最近写了一个图书管理系统关于Scanner输入的值,如何捕获异常的问题_第1张图片每当我输入的值和Scanner对象要求输入的值不一致的时候,会报错

第一反应,捕获异常,并对其进行处理

关于Scanner输入的值,如何捕获异常的问题_第2张图片

但是整个系统的代码都基本成型,每一个都捕获的话,工作量太大

所以决定将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缓存
            }
        }
    }


}

 类中的每个方法,调用的时候都会使用scanner对象,调用Scanner类中的输入方法,并且捕获异常,并将其放入循环中,直到用户输入正确,跳出循环。

使用的时候也很方便,由于这个工具类中的方法全部使用的是静态方法,所以直接类名.方法名就可以使用了。

private static void recharge() {
        System.out.println("请输入要充值的用户名:");
        String u_name =ScannerUtil.next();
        //调用工具类中的next方法,返回的String类型的值赋值给u_name
    }

你可能感兴趣的:(java)