Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javan必须是正的_Java_Arrays - Fatal编程技术网

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;
 }