我不断出错了。我想检查重复项。在此之后还有更多,但是现在所有重要的事情都表明我得到的OutOfBoundsException
ArrayList
,索引:1大小:1
ArrayList lottery = new ArrayList();
for (int n = 0; n < 4;) {
int number = 0;
int first = 0;
int value = 0;
boolean found = false;
first = (int) (Math.random() * 42 + 1);
lottery.add(first);
count[first]++;
for (int i = 1; i < 6;) {
number = (int) (Math.random() * 42 + 1);
for (int k = 0; k < 6;) {
// here value = lottery.get(k);
if (value == number) {
found = true;
} else {
found = false;
}
if (found == true) {
number = (int) (Math.random() * 42 + 1);
} else {
k++;
}
}
System.out.println("number " + (i + 1) + ": " + number);
if (found == false) {
lottery.add(number);
count[number]++;
i++;
}
}
}
答案 0 :(得分:2)
我认为count
是您要检查的数组
我注意到两个错误
值参数从未更改过,因此始终保持=0
并在此代码中
number = (int) (Math.random() * 42 + 1);
if (value == number) {
found = true;
数字永远不会等于零 所以
if (found == false) {
lottery.add(number);
count[number]++;
i++;
}
将永远执行
并且在抽奖中添加新元素将始终在每个循环中发生两次
并且没有n++
所以基本上你的大循环永远不会结束
并通过此代码
first = (int) (Math.random() * 42 + 1);
你确定计数长度恰好是42,因为如果它更少会导致IndexOutOfBoundsException
如果超过42
你没有检查其中的所有元素:)
希望有所帮助
答案 1 :(得分:1)
在我看来,你没有办法让你的for循环结束。你没有任何允许增加循环的东西,比如i ++。也许这可以解决你所面临的问题。