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

Passing random.nextInt() as a parameter causes strange problems

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

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 之间

我意识到问题出在调用

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, ...);

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

这仅仅是因为在第一个参数之后,您忘记添加参数 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);