如何在Java上确定字符串是否为双精度

时间:2018-07-05 14:34:09

标签: java

我想知道字符串是否为双精度

例如

   value1 = "236.685"   
   value2 = "it is 3"  

我想要一个可以返回的代码

value1double
value2不是double

3 个答案:

答案 0 :(得分:2)

您可以通过尝试使用Double.parseDouble()解析字符串并捕获NumberFormatException来进行检查。如果没有抛出此异常,则它是有效的double。这段代码:

private static boolean isDouble(String string)
{
    try
    {
        Double.parseDouble(string);
    }
    catch (NumberFormatException e)
    {
        return false;
    }
    return true;
}

public static void main(String[] args)
{
    String maybeDouble0 = "123.4";
    String maybeDouble1 = "not a double 345";
    String maybeDouble2 = "45";
    String maybeDouble3 = "321.";
    String maybeDouble4 = ".753";
    String maybeDouble5 = "just text";
    System.out.println(maybeDouble0 + ": " + isDouble(maybeDouble0));
    System.out.println(maybeDouble1 + ": " + isDouble(maybeDouble1));
    System.out.println(maybeDouble2 + ": " + isDouble(maybeDouble2));
    System.out.println(maybeDouble3 + ": " + isDouble(maybeDouble3));
    System.out.println(maybeDouble4 + ": " + isDouble(maybeDouble4));
    System.out.println(maybeDouble5 + ": " + isDouble(maybeDouble5));
}

将产生以下输出:

123.4: true
not a double 345: false
45: true
321.: true
.753: true
just text: false

与RegEx模式相比,我更喜欢这种方法,因为它直接询问Java,而不是假设知道Java的内部双重表示形式。

答案 1 :(得分:1)

Double.parseDouble()使用try catch语句

try{
    double num = Double.parseDouble(value);
    System.out.println("is a double");
catch (Exception e){
    System.out.println("not a double");
}

答案 2 :(得分:0)

您可以结合使用parseInt和parseDouble

同时需要两者的原因是因为parseDouble仍将解析ints。您可能可以将它们组合在一起,我只编写了两个单独的函数,一个检查int,另一个检查双精度。

如果 isInt为假,而 isDouble为真,则为双精度

如果两个都为true,则为int(我认为您的示例中不是double)。 如果两者均为假,则其不是数字。

最后一种情况是不可能的。

/