javan必须是正的
我收到此javan必须是正的,java,arrays,Java,Arrays,我收到此for循环上的“n必须为正错误”: for(int i = 0; i < 8; i++){ array2[i] = CS2004.numbers.get(rand.nextInt(randomNumbers.size())); } for(int i=0;i
for
循环上的“n必须为正错误”:
for(int i = 0; i < 8; i++){
array2[i] = CS2004.numbers.get(rand.nextInt(randomNumbers.size()));
}
for(int i=0;i<8;i++){
array2[i]=CS2004.numbers.get(rand.nextInt(randomNumbers.size());
}
然而,每当我将其更改为以下内容时,它似乎工作得很好
for(int i = 0; i < 8; i++){
array2[i] = CS2004.numbers.get(rand.nextInt(1000 + randomNumbers.size()));
}
for(int i=0;i<8;i++){
array2[i]=CS2004.numbers.get(rand.nextInt(1000+randomNumbers.size());
}
该方法的简要背景:它读入一个包含前1000个素数的文件,然后将它们随机添加到一个大小为8的数组中
此外,如果我将数字1添加到1000的位置,它会为数组中的每个索引提供一个2.0
的答案。如果我将其更改为10,则以下是输出:[29.0、29.0、17.0、11.0、5.0、19.0、29.0、2.0]
。为了完成示例,当输入100
时,结果如下:[61.0、107.0、433.0、193.0、257.0、29.0、463.0、127.0]
数字(101001000,…,n)
是否“告诉”结果它可以添加长度不超过n的数字?还是完全是另一种解释
有人能告诉我为什么会出现这个错误吗
谢谢。第一次调用rand.nextInt()时,我假设randomNumbers.size()为0。你是说你想要一个从0开始的随机数,它小于0(你给出的数字),这是没有意义的。你必须给它一个正数,这样它才能给你一个合理的结果 我猜这行应该是
array2[i] = CS2004.numbers.get(rand.nextInt(CS2004.numbers.size()));
以下是JavaDoc要说的内容
请注意,伪代码有
if(n是随机数
零?我认为您需要提供更多关于什么类型和变量是完美的背景信息!我花了几个小时研究这个问题,所以现在一切都很模糊!-)谢谢。
public int nextInt(int n) {
if (n <= 0)
throw new IllegalArgumentException("n must be
if ((n & -n) == n) // i.e., n is a power of 2
return (int)((n * (long)next(31)) >> 31);
int bits, val;
do {
bits = next(31);
val = bits % n;
} while (bits - val + (n-1) < 0);
return val;
}