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

sha*_*ank 3 groovy groovyshell groovy-console

你好我是一个groovy的初学者我是如何检查如何检查给定的输入是否是一个数字我试过以下

def a= ' 12.571245ERROR'
if(a.isNan()==0)
{
println("not a number")
}
else
{
println("number")
}
Run Code Online (Sandbox Code Playgroud)

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

Wil*_*ill 6

Groovy String::isNumber()拯救:

def a = "a"

assert !a.isNumber()

def b = "10.90"

assert b.isNumber()
assert b.toDouble() == 10.90
Run Code Online (Sandbox Code Playgroud)


Mic*_*ter 5

要回答你的问题,我不会考虑isNan().它在网上提到,但它没有出现在GDK的String文档.

考虑一下:

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

println "isNumber : ${isNumber}"
Run Code Online (Sandbox Code Playgroud)

或者使用更多Java风格的东西:

def input = "12.37error"

def isNumber = false

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

println "isNumber : ${isNumber}"
Run Code Online (Sandbox Code Playgroud)


kda*_*bir 4

您可以尝试将其转换为数字并捕获异常(如果它不是数字)

def a= ' 12.571245ERROR'

try {
    a as Double
    println "a is number"
}catch (e) {
    println "a is not a number"
}
Run Code Online (Sandbox Code Playgroud)

或者

if(a instanceof Number)
    println "Number"
else
    println "NaN"
Run Code Online (Sandbox Code Playgroud)

尽管请记住,在第二种检查方式中,即使a是有效数字,但类似于String“123”,它也会失败。123 是数字,但“123”不是。