将 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);
我正在尝试将随机整数传递给构造函数。
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
我意识到问题出在调用
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);