我正在尝试创建一个数组,如果值/大小超过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语句吗?
答案 0 :(得分:1)
在将项目添加到列表之前,您将从addItem
方法返回。
if(isize <= 20)
{
LineItem lineItem = items.get(i);
lineItem.setQuantityCredit(credit);
return; // This is the problem
}
答案 1 :(得分: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”等于零,因此跳过for循环。第二次调用此方法时,“isize”等于零,因此循环变为一次并在添加之前返回。
我不确定你在for循环中尝试做什么,因为它真的没有意义。如果您只想将items数组限制为20或更少,只需添加
即可if (items.size() < 20) {
items.add(item);
}
代码。如果您正在尝试一些更复杂的逻辑,那么请解释您的目标。