如何在groovy中使用isNan()检查输入是数字还是字符串

时间:2013-08-10 09:59:01

标签: groovy groovyshell groovy-console

您好我是groovy的初学者我是如何检查给定输入是否是数字我尝试了以下

def a= ' 12.571245ERROR'
if(a.isNan()==0)
{
println("not a number")
}
else
{
println("number")
}

请帮助我如何在groovy中使用isNan。我google了很多但没有找到任何结果。提前致谢

4 个答案:

答案 0 :(得分:5)

要回答你的问题,我不会考虑isNan()。它在网络上提到,但它没有出现在字符串文档for the GDK中。

考虑一下:

def input = "12.37"
def isNumber = input.isDouble() 

println "isNumber : ${isNumber}"

或使用更具Java风格的东西:

def input = "12.37error"

def isNumber = false

try {
    double value = Double.parseDouble(input)
    isNumber = true
} catch (Exception ex) {
}

println "isNumber : ${isNumber}"

答案 1 :(得分:5)

Groovy的String::isNumber()救援:

def a = "a"

assert !a.isNumber()

def b = "10.90"

assert b.isNumber()
assert b.toDouble() == 10.90

答案 2 :(得分:4)

如果不是数字

,您可以尝试将其强制转换为数字并捕获异常
def a= ' 12.571245ERROR'

try {
    a as Double
    println "a is number"
}catch (e) {
    println "a is not a number"
}

if(a instanceof Number)
    println "Number"
else
    println "NaN"

虽然请记住,在第二种检查方式中,即使a是有效数字但在String之类的“123”中也会失败。 123是数字,但“123”不是。

答案 3 :(得分:0)

对于带逗号的数字格式(例如:10,00,000),这将失败

def aNumber =“ 10,00,000” aNumber.isNumber()和aNumber.isDouble()给出的答案为假。