例如
value1 = "236.685"
value2 = "it is 3"
我想要一个可以返回的代码
value1
是double
value2
不是double
答案 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)。 如果两者均为假,则其不是数字。
最后一种情况是不可能的。
/