如何在Groovy中将数组转换为整数?

3
假设我在 Groovy 中定义了一个数组,如下所示:
```groovy ```
def int[] a = [1,9]

我希望将这个数组转换为一个名为a1int变量,使得a1的值为19(即a中的数组值),有什么方法可以实现吗?


我不了解Groovy,但是如何将'09'存储为整数? - Martin Hennings
5个回答

7

我建议选:

[1, 2, 3, 4].inject(0) { a, h -> a * 10 + h }

3

1) 不需要def:

int[] a = [0,9]

2) 你说的09是什么意思?难道不应该是9吗?你是如何理解这种编码方式的?

如果你只是想把数字连接在一起,那么可以这样做:

[ 1, 2, 3, 4 ] == 1234

然后你可以做这样的事情:
int b = a.collect { "$it" }.join( '' ) as int

将每个元素转换为字符串,将它们全部连接在一起,然后将结果字符串解析为整数。

嗯,那个值只是9而已,只是为了显示数组中的两个值应该放入变量中。比如说,如果有int[] a = [1,9],那么我需要得到的结果是19。 - Ant's
这个看起来很容易阅读,而且也很容易理解 :) 再次感谢你 :) - Ant's

2
def sb = new StringBuilder()
[0,9].each{
    sb.append(it)
}
assert sb.toString() == "09"

1

根据您对其他答案的评论,这应该可以帮助您开始:

def a = [ 0, 9, 2 ]

int a1 = a.join('') as int​

assert a1 == 92

从其他答案中可以看出,有很多方法可以实现你想要的功能。只需使用最适合你编码风格的方法即可。


谢谢:) 和 tim_yates 是一样的。 - Ant's
是的,我现在明白了。但是你不需要调用collect方法。 - deluan
1
我相信你是在原始问题中,如果a是一个int[],那么你就会这样做。 - tim_yates
不,你不需要这样做。你可以在这里看到它的运行效果:http://groovyconsole.appspot.com/script/443002 - deluan
жѓБСИфСИЇТў»int[]у▒╗тъІуџёa№╝їт«ЃТў»def a = [ 0, 9, 2 ]№╝їТЅђС╗ЦaТў»СИђСИфListсђѓ - tim_yates
哦,抱歉。你完全正确。我漏掉了这个重要的点。你也可以将int[]强制转换为List,就像这样:(a as List).join('') as int。无论如何,感谢你的纠正。 - deluan

0
你已经有很多选择了,但为了增加混乱,这里再给你一个选项:
int[] a = [1,9]
Integer number = a.toList().join().toInteger()

// test it
assert number == 19

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