一:概述
在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+");
}