如何在Groovy中将字符串转换为整数

3

如何在Groovy中将一个字符串(它是一个数字)转换为整数。

我使用的是Groovy 2.4.5。这里有一个抛出异常的示例代码:

代码:

def String a = "CHECK";

def String b = "3.5";
def String c = "7.5";

println "Is a number ? " + a.isNumber();
println "Is b number ? " + b.isNumber();
println "Is c number ? " + c.isNumber();

if (a.equals("CHECK"))
{
    def int x = b.toInteger();
    def int y = c.toInteger();
}

println b+c;

输出(带有异常):
Is a number ? false
Is b number ? true
Is c number ? true
Exception thrown

java.lang.NumberFormatException: For input string: "3.5"

    at myAdditionLogic.run(myAdditionLogic.groovy:12)

"3.5" 不是整数。它是一个数字,但不是整数。可能是双精度/浮点数。 - Igor Artamonov
1
为什么要同时使用def和String?def String a - Sachin
我的理解是,在引号下声明的字符串可以是“任何东西”,一个“小数点”也被认为是字符串的一部分。我使用了“def”然后使用“String”来将该变量专门声明为字符串。只有“def”不能专门声明类型。请纠正我。 - user2650065
字符串b =“3.5”就足够了,不需要def:如果您给出类型,则可以省略def。当然,句点(字符'.')是字符串的一部分。但是,String类不知道它是一个小数点。 - user1708042
1个回答

5

integer 是一个不包含小数点的 32 位数字。您可能需要一个 decimal 数据类型,比如 Double

可以尝试这样:

String a = "CHECK";

String b = "3.5";
String c = "7.5";

println "Is a number ? " + a.isNumber();
println "Is b number ? " + b.isNumber();
println "Is c number ? " + c.isNumber();

if (a.equals("CHECK"))
{
    def x = b as Double;
    def y = c as Double;
    println x + y
}

谢谢Igor。现在它对我有用了。 - user2650065

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接