java - 如何检查字符串是否为数字

标签 java string double

这里没有太多解释,我需要检查一个字符串是否是数字,我尝试了这个推荐的方法,但有时会失败:

try {

    Double.parseDouble((String) myString);
    // CODE IF IT IS A NUMBER HERE

} catch (NumberFormatException e) {
    // CODE IF IT IS NOT A NUMBER HERE
    e.printStackTrace();
}

导致失败的字符串是C:\Users\xx11\Desktop\Example\Example.doc

我认为这与 11\D 部分有关,但我不确定,也无法证明这一点。

有更多经验的人是否知道为什么会发生这种情况以及如何解决它?

谢谢。

最佳答案

Double.parseDouble() 不是推荐的方法。由谁推荐以及为何推荐?它使用 double 文字 in Java source code 的规则,其中 99% 不是您希望程序的输入方式(它允许输入指数、十六进制等)。哦,它不区分区域设置。

如果输入来自人类,你最好使用DecimalFormat它是区域设置感知的并且可以轻松定制(它甚至提供对舍入模式的控制):

DecimalFormat fmt = new DecimalFormat();
Number number = fmt.parse(input);

从 DecimalFormat 中,您可以获得整数、数字或 BigDecimal,具体取决于该数量描述的内容以及您计划如何使用它。

关于java - 如何检查字符串是否为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35621084/

相关文章:

android - java.lang.NumberFormatException : For input string: "-0.‎086167157" 异常

java - 在不同的目录中使用类文件

java - 使用 RxJava 在本地和服务器之间同步记录

java - 在 JPA 中使用 LocalDateTime 和 @Version 注释

c++ - 浮点加法不包括小数C++

java - 我制作了一个 CLI 计算器,我想知道,如何让程序无限期地接受数字,直到用户输入停止命令?

java - 有没有一种方法可以使System.lineSeparator()在JLabel字符串中工作?

python - 使用 Python 3.3.1 将 Unicode 代码点转换为 Unicode 字符

java - 字符串格式化,如何为 'iiii' 和 'wwww' 提供相同的宽度

python - 将字符串拆分为一个列表,项目长度相等