0

我正在尝试创建一个如果值/大小超过 20 则不添加项目的数组。此解决方案仅添加 1 个项目,然后即使值小于 20 也停止。我如何更改它以使其仅接受值最多 20 个

package business;
import java.io.Serializable;
import java.util.ArrayList;

public class Cart implements Serializable
{
private ArrayList<LineItem> items;

    public Cart()
{
    items = new ArrayList<LineItem>();
}

    public ArrayList<LineItem> getItems()
{
    return items;
}

    public int getCount()
{
    return items.size();
}

    public void addItem(LineItem item)
{
    String code = item.getProduct().getCode();
    int quantity = item.getQuantity();
    double credit = item.getProduct().getCHours();
    String credit2 = Double.toString(item.getProduct().getCHours());
    int isize = items.size();


    for (int i = 0; i < items.size(); i++)
    {
        if(isize <= 20)
        {
        LineItem lineItem = items.get(i);
            lineItem.setQuantityCredit(credit);
            return;
       }
    }
    items.add(item);
    }

    public void addItemCredit(LineItem item)
{
        double credit = item.getProduct().getCHours();
        String credit2 = Double.toString(item.getProduct().getCHours());
        String code = item.getProduct().getCode();

    for (int i = 0; i < 20; i++)
    {
        LineItem lineItem2 = items.get(i);
            lineItem2.setQuantityCredit(credit);
            return;

        }
    items.add(item);

    }

public void removeItem(LineItem item)
{
        String code = item.getProduct().getCode();
        for (int i = 0; i < items.size(); i++)
        {
            LineItem lineItem = items.get(i);
            if (lineItem.getProduct().getCode().equals(code))
            {
                items.remove(i);
                return;
            }
        }
    }
}

我认为你说的是​​对的,所以我尝试了这个

if(isize <= 20) 
{ 
LineItem lineItem = items.get(i); lineItem.setQuantityCredit(credit); 
} 
return; 
} 
items.add(item); 
} 


and 


if(isize <= 20) 
{ 
LineItem lineItem = items.get(i); lineItem.setQuantityCredit(credit); 
} 
} 
items.add(item); 
return; 
} 

但都没有奏效。那么我应该在哪里放置 d return 语句?

4

2 回答 2

1

addItem在将项目添加到列表之前,您正在从该方法返回。

if(isize <= 20)
{
     LineItem lineItem = items.get(i);
     lineItem.setQuantityCredit(credit);
     return; // This is the problem
}
于 2009-05-31T02:42:36.147 回答
0

我只是想在尝试回答之前澄清您的代码。

// get the total number of items in the cart
int isize = items.size();

// loop through the items
   // if there are more than 20 items then set the credit quantity and
     // return without adding
   // otherwise do nothing 
for (int i = 0; i < items.size(); i++)
{
    if(isize <= 20)
    {
    LineItem lineItem = items.get(i);
        lineItem.setQuantityCredit(credit);
        return;
   }
}
// if there are more than 20 items add another
items.add(item);

它只添加一项而不添加更多项的原因如下:第一次调用此方法“isize”等于0,因此跳过了for循环。第二次调用此方法时,“isize”为零,因此循环执行一次并在添加之前返回。

我不确定你在 for 循环中试图做什么,因为它真的没有意义。如果您只想将 items 数组限制为 20 或更少,只需添加

if (items.size() < 20) {
  items.add(item);
}

到你的代码。如果您正在尝试一些更复杂的逻辑,请解释您的目标。

于 2009-05-31T05:06:10.187 回答