GROOVY Как обрезать случайное число в целое число - PullRequest
1 голос
/ 19 октября 2010

Я хочу урезать случайно сгенерированное число до целого числа.

Я пробовал разные способы, но, похоже, ни один из них не работает. Моя последняя попытка выглядит следующим образом:

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] Возможно решения: печать (java.lang.Object), печать (java.io.PrintWriter), печать (java.lang.Object)

Спасибо, Ричард

Ответы [ 2 ]

2 голосов
/ 19 октября 2010

Кажется, проблема в том, что в этой строке

def cleaned = parseInt(som)

som - это Double, и нет метода 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)  
0 голосов
/ 28 февраля 2013

Самый простой способ:

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

log.info som 
...