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)

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


person Richard Fortune    schedule 19.10.2010    source источник


Ответы (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)  
person Dónal    schedule 19.10.2010
comment
Привет, в итоге я заставил это работать: def som = Math.random() * totalContacts randomSeed = som.toInteger() log.info randomSeed Но попробую и ваш ответ! Ваше здоровье! - person Richard Fortune; 26.10.2010

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

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

log.info som 
person Kevinf    schedule 28.02.2013