题
我试图创建,这并不添加项目如果值/尺寸大于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;
}
但既不工作。所以WHR我应将d return语句?
解决方案
您正在从addItem
方法添加项目到列表之前返回。
if(isize <= 20)
{
LineItem lineItem = items.get(i);
lineItem.setQuantityCredit(credit);
return; // This is the problem
}
其他提示
我只是想澄清你的代码之前,我尝试回答。
// 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”等于零,因此for循环被跳过。这种方法被称为“isize”第二时间等于零,因此在循环变一次和添加之前的回报。
我不是一定要尝试的里面做的for循环,因为它确实没有意义的东西。如果只是想项目阵列被限制到20个或更少只是添加
if (items.size() < 20) {
items.add(item);
}
到您的代码。如果有一些你正在尝试则说明你的目标更复杂的逻辑。
不隶属于 StackOverflow