2009-05-31 8 views
0

Ich versuche, ein Array erstellen, die nicht Elemente hinzugefügt, wenn der Wert/Größe ist mehr als 20. diese Lösung fügt nur 1 Element und stoppt dann, auch wenn der Wert weniger als 20 ist. wie Ich ändere es so, dass es nur Werte bis maximal 20 akzeptiert.Jsp-Array-Liste Problem

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

ich denke, wat u sagte stimmt so habe ich versucht, diese

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

aber weder gearbeitet. Also, who Place ich d Return Aussage?

+0

Gibt es einen Grund, warum Sie ein Array benötigen? – Milhous

+0

Können Sie genauer erklären, was Ihre addItem() - Methode macht? –

+0

@fdon Sie sollten wahrscheinlich keine JSP im Fragetitel haben, da dies nichts mit JSP zu tun hat. Das ist reines Java. Außerdem sollten Sie nur den Code eingeben, der Ihnen Probleme bereitet. – martinatime

Antwort

1

Sie kehren von der Methode addItem zurück, bevor Sie das Element zur Liste hinzufügen.

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

hallo vielen Dank für die Zeit Takin zu antworten denke ich, wat u sagte richtig ist, so habe ich versucht, diese if (iSize <= 20) { LineItem LineItem = items.get (i); lineItem.setQuantityCredit (Kredit); } Rückkehr; } items.add (Element); } und if (iSize <= 20) { LineItem LineItem = items.get (i); lineItem.setQuantityCredit (Kredit); } } items.add (Element); Rückkehr; } aber keiner hat funktioniert. Also, who Place ich d Return Aussage? –

0

Ich möchte nur Ihren Code klären, bevor ich versuche zu antworten.

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

Der Grund, dass es nur ein Element hinzufügt und nicht mehr ist wie folgt: Das erste Mal, diese Methode „iSize“ gleich Null ist und damit die für die Schleife übersprungen wird, aufgerufen wird. Wenn diese Methode das zweite Mal aufgerufen wird, ist die "isize" gleich Null und daher wird die Schleife einmal durchlaufen und vor dem Hinzufügen zurückgegeben.

Ich bin nicht sicher, was Sie versuchen, innerhalb der for-Schleife zu tun, da es wirklich keinen Sinn macht. Wenn das Elementarray nur auf 20 oder weniger beschränkt werden soll, fügen Sie einfach

Ihrem Code hinzu. Wenn es eine komplexere Logik gibt, die Sie versuchen, dann erklären Sie Ihre Ziele.