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)、print(java.lang.Object)

ありがとう、リチャード

4

2 に答える 2

2

問題は、この行にあるようです

def cleaned = parseInt(som)

somであり、引数を取るメソッドはDoubleありません。インポートを表示していませんが、静的にインポートしてそれを呼び出そうとしていると思います。parseIntDoubleInteger.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 に答える