سؤال

أحاول إنشاء مجموعة لا تضيف عناصر إذا كانت القيمة / الحجم أكثر من 20. يضيف هذا الحل عنصر واحد فقط ثم يتوقف حتى لو كانت القيمة أقل من 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; 
} 

لكن لا عملت. حتى ماذا أفعل بيان الإرجاع؟

هل كانت مفيدة؟

المحلول

أنت تعود من 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);

السبب في أنه يضيف عنصر واحد فقط وليس أكثر كما يلي: المرة الأولى التي تسمى هذه الطريقة "إيزز" تساوي صفر وبالتالي يتم تخطي حلقة. في المرة الثانية، تسمى هذه الطريقة "إيزز" تساوي الصفر وبالتالي تسير الحلقة مرة واحدة وإرجاعها قبل إضافة.

أنا لست متأكدا مما تحاول القيام به داخل حلقة لأنه حقا لا معنى له. إذا كنت تريد فقط أن تقتصر على صفيف العناصر على 20 أو أقل

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

إلى الكود الخاص بك. إذا كان هناك بعض المنطق المعقدة الذي تحاوله ثم شرح أهدافك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top