【发布时间】:2014-02-24 08:23:14
【问题描述】:
我在 java 中有以下代码。在这里,我试图查看数组的随机组合。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Random;
public class Dummy {
public static void main(String args[]) throws Exception {
Random rand = new Random();
int[] a = { 1, 2, 3, 4, 5 };
int[] b = { 1, 0, 1, 0, 1 };
Arrays.sort(a);
Arrays.sort(b);
int x = a.length * b.length;
System.out.println(x);
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 25; i++) {
System.out.println("random of i is" + a[rand.nextInt(i)]
+ "and j is " + b[rand.nextInt(i)]);
}
System.out.println(list);
}
}
这里我收到以下错误。
Exception in thread "main" java.lang.IllegalArgumentException: n must be positive
at java.util.Random.nextInt(Unknown Source)
at Dummy.main(Dummy.java:20)
请告诉我如何解决它。基于类似问题的其他一些帖子,我发现随机只能给出正数,我想知道如何也可以给出负数。
我还想知道通过延续 a[] 和 b[] 可以获得多少种组合。
谢谢
【问题讨论】:
-
来自文档:
if (n <= 0) throw new IllegalArgumentException("n must be positive");在您的第一次迭代中i的值是多少? -
ypu 的意思是“我可以通过永久 a[] 和 b[] 获得多少组合”?
-
@ZouZou:这里的迭代,在0到25之间,第一次迭代是1
-
@user2423959 在您的第一次迭代中,
i的值是 0,而不是 1。 -
好的,谢谢帮助:-)