0 votes

Problème de liste de tableaux en jsp

Bonjour J'essaie de créer un tableau qui n'ajoute pas d'éléments si la valeur/taille est supérieure à 20. Cette solution ajoute seulement 1 élément et s'arrête même si la valeur est inférieure à 20. Comment puis-je la modifier pour qu'elle n'accepte que les valeurs jusqu'à 20 maximum ?

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

Je pense que ce que tu as dit est vrai, alors j'ai essayé ça.

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

mais aucun des deux n'a fonctionné. alors où dois-je placer l'instruction de retour ?

1voto

Apocalisp Points 22526

Vous revenez de la addItem avant d'ajouter l'élément à la liste.

if(isize <= 20)
{
     LineItem lineItem = items.get(i);
     lineItem.setQuantityCredit(credit);
     return; // This is the problem
}

0voto

martinatime Points 1863

Je veux juste clarifier votre code avant de tenter de répondre.

// 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);

La raison pour laquelle elle n'ajoute qu'un seul élément et pas plus est la suivante : La première fois que cette méthode est appelée, "isize" est égal à zéro et donc la boucle for est sautée. La deuxième fois que cette méthode est appelée, "isize" est égal à zéro et donc la boucle va une fois et revient avant l'ajout.

Je ne suis pas certain de ce que vous essayez de faire à l'intérieur de la boucle for, car cela n'a pas vraiment de sens. Si vous voulez simplement que le tableau d'éléments soit limité à 20 ou moins, ajoutez simplement

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

à votre code. Si vous tentez de mettre en place une logique plus complexe, expliquez vos objectifs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X