我的comp sci类中有一个程序必须跟踪cookie订单(想想女童子军cookie)。这是一种旨在删除某些Cookie并返回删除的盒子数的方法。它不断超越界限。 ArrayList是“ orders”变量,它由CookieOrder对象(下面的CookieieOrder类)组成

public int removeVariety(String cookieVar)
{
    int counter = 0;
    for(int i = orders.size() - 1; i > 0; i--)
    {
        if(orders.get(i).getVariety().equals(cookieVar))
        {
            counter += orders.get(i).getNumBoxes();
            orders.remove(i);
        }
    }
    return counter;
}


这是CookieOrder类

private String variety;
private int boxes;

public CookieOrder (String variety, int numBoxes)
{
    this.variety = variety;
    boxes = numBoxes;
}

public String getVariety()
{
    return variety;
}

public int getNumBoxes()
{
    return boxes;
}

最佳答案

不要使用for循环,请使用迭代器并使用Iterator#remove()

09-27 14:47