GROOVY Как обрезать случайное число в целое число
Я хочу обрезать случайно сгенерированное число до целого числа.
Я пробовал разные способы, но ни один из них не помог. Моя последняя попытка заключается в следующем:
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)
Спасибо Ричард
2 ответа
Проблема в том, что на этой линии
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)
Самый простой способ это:
def som = Math.random() * totalContacts as int
log.info som