一:概述
在java的学习中,经常会遇到需要判断用户输入的数据是否为数值的问题。这里将去介绍几种方法去实现这个需求。
二:具体说明
<1>使用try...catch模块去实现
一种常见的方法是尝试将字符串转换为数值类型,如果转换成功则说明该字符串是数值,否则会抛出异常。我们可以利用这一特性来判断字符串是否为数值。
  Scanner sc = new Scanner(System.in);
        System.out.println("请输入您需要输入的数值");
        String input1 = sc.next();
        String input2 = sc.next();
        System.out.println(input1 + " 是否为数值: " + isNumeric(input1)); // 输出 true
        System.out.println(input2 + " 是否为数值: " + isNumeric(input2)); // 输出 false
    }
    /**
     * @param str 用户输入的字符串
     * @return true false
     */
    public static boolean isNumeric(String str) {
        try {
            Double.parseDouble(str);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }

<2>使用正则表达式去判断
使用正则表达式来判断获取到的数据是否为数值。通过匹配数值的正则表达式来验证数据是否为数值。
public static void main(String[] args) {
        String data1 = "12345";
        String data2 = "abcd";
        System.out.println(data1 + " 是数值吗? " + isNumeric(data1));
        System.out.println(data2 + " 是数值吗? " + isNumeric(data2));
    }
    /**
     *
     * @param str 用户输入的数据
     * @return 是否为数值
     */
    public static boolean isNumeric(String str) {
        return str.matches("-?\\d+(\\.\\d+)?");
    }

正则表达式中里面的详细介绍
- -?: 这个部分匹配一个负号(-)或一个空字符串("")如果数字是正数。
- \d+: 这个部分匹配一个或多个数字(\d)。
- (\.\d+)?: 这个部分匹配一个可选的小数部分。它由一个点(.)和一个或多个数字(\d)组成。如果小数部分不存在,那么整个模式将匹配数字的整数部分。
- -?\\d+(\\.\\d+)?来匹配数值,其中- -?表示可选的负号,- \\d+表示一位或多位数字,- (\\.\\d+)?表示可选的小数部分。
<3>综合案例
验证用户输入的年龄是否为数值,并且年龄为正整数,不为负数。
 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的年龄:");
        String ageInput = scanner.nextLine();
        if (isNumeric(ageInput) && Double.parseDouble(ageInput) > 0) {
            int age = Integer.parseInt(ageInput);
            System.out.println("您输入的年龄是:" + age);
        } else {
            System.out.println("请输入有效的年龄!");
        }
        scanner.close();
    }
    public static boolean isNumeric(String str) {
        return str.matches("-?\\d+");
    }











