2009-05-31 7 views
0

値/サイズが20より大きい場合、項目を追加しない配列を作成しようとしています。 このソリューションは、1つの項目のみを追加し、値が20未満であっても停止します。 私は最大20個までの値しか受け入れないように変更します。jsp配列リストの問題

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

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

を試みたが、どちらも働いていたと思います。だからこそ私はreturn文を置きますか?

+0

配列が必要な理由はありますか? – Milhous

+0

addItem()メソッドが何をしているかをさらに詳しく説明できますか? –

+0

@fdonこれはJSPとは関係がないので、おそらく質問タイトルにJSPを入れてはいけません。これは純粋なJavaです。また、問題を引き起こしているコードだけを含めるようにしてください。 – martinatime

答えて

1

リストに項目を追加する前に、addItemメソッドから戻ります。

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

HI おかげでたくさん を返信する時間をターキンため私はuが正しいので、私はこの を試みている前記ワット思う場合(ISIZE <= 20) { のLineItemのlineItem = items.get(I)。 lineItem.setQuantityCredit(credit); } return; } items.add(item); } と IF(ISIZE <= 20) { のLineItemのlineItem = items.get(I)。 lineItem.setQuantityCredit(credit); } } items.add(item); リターン; } でもどちらも機能しませんでした。だからこそ私はreturn文を置きますか? –

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」と呼ばれる最初の時間がゼロに等しく、従ってループのスキップさ 。このメソッドを2度目に呼び出すと、 "isize"はゼロに等しいので、ループは1回進み、追加する前に戻ります。

forループの中で何をしようとしているのかは分かりませんが、実際には意味がありません。 items配列を20以下に制限したい場合は、コードに

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

を追加するだけです。試しているより複雑なロジックがある場合は、目標を説明してください。