문제

값/크기가 20보다 큰 경우 항목을 추가하지 않는 배열을 만들려고합니다.이 솔루션은 값이 20보다 작은 경우에도 1 개 항목 만 추가 한 다음 값만 변경하여 값만 값 만 허용하는 방법을 추가합니까? 최대 20 Max.

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;
            }
        }
    }
}

wat u가 옳다고 생각해서 이것을 시도했습니다.

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 진술서를 배치합니까?

도움이 되었습니까?

해결책

당신은에서 돌아오고 있습니다 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"라고 불리는 것은 0과 같아서 루프가 건너 뜁니다. 두 번째 로이 방법은 "isize"라고 불리는 것은 0과 같으므로 루프는 한 번 진행되고 추가하기 전에 돌아옵니다.

나는 당신이 For Loop 내부에서 무엇을하려고하는지 확실하지 않습니다. 항목 배열이 20 이하로 제한되기를 원한다면 추가하십시오.

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

코드에. 시도하고있는 더 복잡한 논리가 있다면 목표를 설명하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top