介绍
在 Java 中,字符串(string)是一种常用的数据类型,可以用于各种任务。它通常用于存储来自文本字段或文本区域的输入。确定这些输入是否为有效的数字数据非常重要。在本实验中,我们将学习在 Java 中检查字符串是否为有效数字的不同方法。
在 Java 中,字符串(string)是一种常用的数据类型,可以用于各种任务。它通常用于存储来自文本字段或文本区域的输入。确定这些输入是否为有效的数字数据非常重要。在本实验中,我们将学习在 Java 中检查字符串是否为有效数字的不同方法。
解析是 Java 中确定字符串是否为数字的最简单且最佳的方法。Java 提供了不同的内置解析方法,例如 Integer.parseInt(String number)
、Double.parseDouble(String number)
、Float.parseFloat(String number)
和 Long.parseLong(String number)
,它们充当相应的数字数据类型转换器。
public static boolean isStringNumeric(String number) {
boolean isNumeric;
if(number == null) {
isNumeric = false;
} else {
try {
Double num = Double.parseDouble(number);
isNumeric = true;
} catch(NumberFormatException e) {
isNumeric = false;
}
}
return isNumeric;
}
public static void main(String[] args) {
String num1 = "1001";
String num2 = "-101";
String num3 = "1a10";
String num4 = null;
System.out.println("String " + num1 + " is numeric: " + isStringNumeric(num1));
System.out.println("String " + num2 + " is numeric: " + isStringNumeric(num2));
System.out.println("String " + num3 + " is numeric: " + isStringNumeric(num3));
System.out.println("String " + num4 + " is numeric: " + isStringNumeric(num4));
}
运行代码的步骤:
NumericStringParser.java
的文件javac NumericStringParser.java
编译代码java NumericStringParser
运行代码正则表达式可以用来匹配字符串并判断其是否为数字。我们使用字符串的 matches()
方法将字符串与正则表达式进行比较。为了匹配字符串,使用正则表达式 -?\\d+(\\.\\d+)?
,其中 -?
表示数字是否为负数,\\d+
用于查找字符串中的一个或多个数字,(\\.\\d+)?
用于匹配小数。在这里,\\.
用于查找小数点,\\d+
用于查找小数点后的一个或多个数字。
public static boolean isStringNumeric(String number) {
boolean isNumeric;
String regex = "-?\\d+(\\.\\d+)?";
if(number == null) {
isNumeric = false;
} else if(number.matches(regex)) {
isNumeric = true;
} else {
isNumeric = false;
}
return isNumeric;
}
public static void main(String[] args) {
String num1 = "1001";
String num2 = "-101";
String num3 = "1a10";
String num4 = null;
System.out.println("String " + num1 + " is numeric: " + isStringNumeric(num1));
System.out.println("String " + num2 + " is numeric: " + isStringNumeric(num2));
System.out.println("String " + num3 + " is numeric: " + isStringNumeric(num3));
System.out.println("String " + num4 + " is numeric: " + isStringNumeric(num4));
}
运行代码的步骤:
NumericStringRegex.java
的文件javac NumericStringRegex.java
编译代码java NumericStringRegex
运行代码Apache Commons 库提供了一些方法来检查字符串是否为数字。
isCreatable()
方法是一种简单且方便的方法,用于检查字符串是否为数字。它还接受以 0x
或 0X
开头的十六进制数字字符串、以 0
开头的八进制数字、使用字母 e
的科学计数法,以及带有类型限定符的数字。
import org.apache.commons.lang3.math.NumberUtils;
public static void main(String[] args) {
String num1 = "a10c";
String num2 = "-104";
String num3 = "100";
String num4 = "0xA10";
System.out.println("String " + num1 + " is numeric: " + NumberUtils.isCreatable(num1));
System.out.println("String " + num2 + " is numeric: " + NumberUtils.isCreatable(num2));
System.out.println("String " + num3 + " is numeric: " + NumberUtils.isCreatable(num3));
System.out.println("String " + num4 + " is numeric: " + NumberUtils.isCreatable(num4));
}
isParsable()
方法用于检查字符串是否可解析。它不能像 isCreatable()
方法那样处理十六进制数字或科学计数法。
import org.apache.commons.lang3.math.NumberUtils;
public static void main(String[] args) {
String num1 = "a10c";
String num2 = "-104";
String num3 = "100";
String num4 = "0xA10";
System.out.println("String " + num1 + " is numeric: " + NumberUtils.isParsable(num1));
System.out.println("String " + num2 + " is numeric: " + NumberUtils.isParsable(num2));
System.out.println("String " + num3 + " is numeric: " + NumberUtils.isParsable(num3));
System.out.println("String " + num4 + " is numeric: " + NumberUtils.isParsable(num4));
}
isNumeric()
方法检查 Unicode 数字,如果数字字符串表示负数或包含小数点,则返回 false
。只有在检查正整数时,才应考虑使用此方法。
import org.apache.commons.lang3.StringUtils;
public static void main(String[] args) {
String num1 = "a10c";
String num2 = "-104";
String num3 = "100";
String num4 = "0.11";
System.out.println("String " + num1 + " is numeric: " + StringUtils.isNumeric(num1));
System.out.println("String " + num2 + " is numeric: " + StringUtils.isNumeric(num2));
System.out.println("String " + num3 + " is numeric: " + StringUtils.isNumeric(num3));
System.out.println("String " + num4 + " is numeric: " + StringUtils.isNumeric(num4));
}
isNumericSpace()
方法还会检查空格。如果字符串是 "19 8"
这样的类型,则此方法将返回 true
。如果字符串仅由空格组成,它也会返回 true
。
import org.apache.commons.lang3.StringUtils;
public static void main(String[] args) {
String num1 = "a10c";
String num2 = " ";
String num3 = "100";
String num4 = "0.11";
System.out.println("String " + num1 + " is numeric: " + StringUtils.isNumeric(num1));
System.out.println("String " + num2 + " is numeric: " + StringUtils.isNumeric(num2));
System.out.println("String " + num3 + " is numeric: " + StringUtils.isNumeric(num3));
System.out.println("String " + num4 + " is numeric: " + StringUtils.isNumeric(num4));
}
在本实验中,我们学习了多种在 Java 中检查字符串是否为数字的方法,以及如何使用它们。我们使用了内置的解析方法、正则表达式以及 Apache Commons 库来检查字符串是否为数字。