跳到主要内容

Java程序检查字符串是否为数值

要理解这个例子,你需要了解以下 Java 编程 主题的知识:

示例 1:检查字符串是否为数字

public class Numeric {

public static void main(String[] args) {

String string = "12345.15";
boolean numeric = true;

try {
Double num = Double.parseDouble(string);
} catch (NumberFormatException e) {
numeric = false;
}

if(numeric)
System.out.println(string + " 是一个数字");
else
System.out.println(string + " 不是一个数字");
}
}

输出

12345.15 是一个数字

在上述程序中,我们有一个名为 stringString,它包含要检查的字符串。我们还有一个布尔值 numeric,用于存储最终结果是否为数字。

为了检查 string 是否只包含数字,在 try 代码块中,我们使用 DoubleparseDouble() 方法将字符串转换为 Double

如果它抛出错误(即 NumberFormatException 错误),则意味着 string 不是一个数字,numeric 被设置为 false。否则,它就是一个数字。

然而,如果你想检查多个字符串,你需要将其改为一个函数。并且,这种基于抛出异常的逻辑可能会非常昂贵。

相反,我们可以使用正则表达式的强大功能来检查字符串是否为数字,如下所示。

示例 2:使用正则表达式(regex)检查字符串是否为数字

public class Numeric {

public static void main(String[] args) {

String string = "-1234.15";
boolean numeric = true;

numeric = string.matches("-?\\d+(\\.\\d+)?");

if(numeric)
System.out.println(string + " 是一个数字");
else
System.out.println(string + " 不是一个数字");
}
}

输出

-1234.15 是一个数字

在上述程序中,我们没有使用 try-catch 代码块,而是使用 regex 来检查 string 是否为数字。这是通过 String 的 matches() 方法完成的。

matches() 方法中,

  • -? 允许字符串中有零个或多个 - 表示负数。
  • \\d+ 检查字符串必须至少有 1 个或更多数字(\\d)。
  • (\\.\\d+)? 允许字符串中有零个或多个给定模式 (\\.\\d+),其中
  • \\. 检查字符串是否包含 .(小数点),
  • 如果是,它应该至少跟着一个或更多数字 \\d+