传递random.nextInt()作为参数会导致奇怪的问题

时间:2015-11-24 21:13:07

标签: java random parameters

我正在尝试将随机整数传递给构造函数。

hotels[2] = new Hotel(random.nextInt(10)+30, random.nextInt()+100, 
                random.nextInt()+20, random.nextInt()+200, 
                random.nextInt()+10, random.nextInt()+300);

但是,在DataPoint构造函数中,内部传递的值是荒谬的,即

Params 1, 3, 5:      38   -695807826   -2078518332

获取-695807826毫无意义。由于random.nextInt()+20

,数字应在20到40之间

3 个答案:

答案 0 :(得分:7)

这只是因为在第一个参数之后,您忘记将参数添加到nextInt

您的电话应该是:

hotels[2] = new Hotel(random.nextInt(10)+30, random.nextInt(10)+100, 
                random.nextInt(10)+20, random.nextInt(10)+200, 
                random.nextInt(10)+10, random.nextInt(10)+300);

答案 1 :(得分:4)

如果您执行random.nextInt()+300之类的操作并且random.nextInt()调用的结果在最大整数值的300之内,您将会溢出并且结果将被解释为负数。< / p>

答案 2 :(得分:-3)

我意识到问题在于调用

random.nextInt()+20

在参数列表中。

当我在方法调用之前生成随机数时,我得到了正常的结果。

        a = random.nextInt(10)+30;
        b = random.nextInt(10)+20;
        c = random.nextInt(10)+10;
        ...
        hotels[2] = new Hotel(a, b, c, ...);