Java越界错误

时间:2016-01-07 16:17:14

标签: java error-handling runtime-error

我不断出错了。我想检查重复项。在此之后还有更多,但是现在所有重要的事情都表明我得到的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++;

        }

    }
}

2 个答案:

答案 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 ++。也许这可以解决你所面临的问题。