将26个对象添加到数组列表中,但只添加了13个

时间:2015-04-13 17:04:22

标签: java arraylist

我创造了一个"交易或没有交易"学校的代码分配。我正在尝试创建26" case"在我的"案例中的对象"使用for循环的arraylist,但是当我尝试测试我的代码时,它不会让我访问索引13之上的任何内容。我得到一个arraylist超出界限错误。

public void createCases()
{
    int amount;
    int counter1 = 1;
    int amountFound;
    int allzero;

    //Make a list of possible winning amounts
    int amounts[] = new int[26];
    for(int i = 0; i <= 25; i++) {
        amounts[i] = counter1;
        counter1++;
    }

    //Copy the winning amounts from amounts to amountsRandom... randomly.
    int amountsRandom[] = new int[26];
    for(int i = 0; i <= 25; i++) {
        do {
            amountFound = (int)(Math.random() * 25);
        } while(amountFound == 0);

        amountsRandom[i] = amounts[amountFound];

        amountFound = 0;
    }

    //Take the amounts in index order and make them part of the case objects in the array list.
    for(int i = 0; i <= 25; i++) {
        cases.add(new Case(i++ , amountsRandom[i-1]));
    }
}

我在这个方法之外声明了我的案例arraylist,所以整个班级都可以访问它。

2 个答案:

答案 0 :(得分:4)

您正在递增i两次:一次在for循环中,一次在构造函数调用中。

答案 1 :(得分:3)

在for循环中,将case对象添加到案例arraylist

for(int i = 0; i <= 25; i++) {
    cases.add(new Case(i++, amountsRandom[i-1]));
}

你正在调用i ++两次,所以我会在每个循环中迭代两次。因此,它只循环13次而不是26次。您可能希望将其更改为new Case(i + 1, amountsRandom[i-1])