1

我正在寻找将随机生成的数字修剪为整数。

我尝试了各种方法,但似乎都没有奏效。我最近的尝试如下:

def som = Math.random() * totalContacts
log.info som 
som.toInteger()
log.info som
def cleaned = parseInt(som)
log.info cleaned 

(我在每一步之后登录到控制台只是为了检查我的结果。)

执行上述代码时出现以下错误 -

groovy.lang.MissingMethodException:没有方法签名:Script69.parseInt() 适用于参数类型:(java.lang.Double) 值:[44.405365593296] 可能的解决方案:print(java.lang.Object), print(java. io.PrintWriter), 打印(java.lang.Object)

谢谢,理查德

4

2 回答 2

2

问题似乎是在这条线上

def cleaned = parseInt(som)

som是 aDouble并且没有parseInt接受Double参数的方法。你还没有显示你的导入,但我猜你已经静态导入Integer.parseInt并试图调用它。

以下更改应该有效:

def som = Math.random() * totalContacts
log.info som 
som.toInteger()
log.info som
def cleaned = som.toInteger()
log.info cleaned 

但是,您在这里尝试做的似乎是在范围内0..totalContacts(包括两者)生成一个随机整数。如果是这样,以下是一个更简单的解决方案:

import org.apache.commons.lang.math.RandomUtils
import java.util.Random

Integer som = RandomUtils.nextInt(new Random(), totalContacts + 1)  
于 2010-10-19T07:39:55.600 回答
0

最简单的方法是:

def som = Math.random() * totalContacts as int

log.info som 
于 2013-02-28T02:11:12.343 回答