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 
Другие вопросы по тегам