2011-02-08 182 views
0
public void collect(int ordNum) 
    { 
     Basket b = new Basket(ordNum); 
     for (Basket b : conveyerBelt) { // line 4 
      readyCollected.add(b); 
     } 
    } 

我想要做的這個方法是通過一個ArrayList的orderNum搜索。當我找到它時,我想將我輸入的orderNum添加到readyCollected中。問題:我收到第4行的錯誤消息。我需要一個方法使用for循環的幫助

想知道如果你們可以幫助我實施這種方法。

順便說一句,傳送帶已經包含訂單號的籃子。因此,可以說運輸帶包含訂單編號爲3的購物籃,並且我輸入3,我希望它將購物籃添加到準備收取的包含訂單編號3的購物籃中。

+1

給出錯誤信息 - 還有,什麼版本的java? – 2011-02-08 18:21:16

+1

您的錯誤信息與您提供的代碼不符,請告訴我們正確的代碼 – 2011-02-08 18:25:51

+0

花時間抄錄錯誤信息而不是張貼屏幕截圖,不勝感激。這次爲你做了。 :) – 2011-02-08 18:26:29

回答

1

我猜你的錯誤是傳送帶不能迭代。要使用foreach結構,你必須確保你正在迭代的對象實現Iterable。

http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.14.2

摘錄:

的表達必須具有類型可迭代否則它必須是一個數組類型(§10.1),或編譯時發生錯誤。

中的增強for語句FormalParameter部分聲明的局部變量的作用域(§14.14)是所包含的聲明

的增強for語句被翻譯成給出一個基本的for語句的含義。

如果Expression的類型是Iterable的子類型,那麼讓我是表達式Expression.iterator()的類型。增強的for語句等價於一個基本的申請表格的聲明:

for (I #i = Expression.iterator(); #i.hasNext();) { 

     VariableModifiersopt Type Identifier = #i.next(); 
    Statement 
} 
0

您不能提供足夠的信息來正確解決此問題。

  • 什麼是錯誤?
  • 什麼類型的傳送帶和準備收集?

此外,你是什麼意思的「訂單號」 - 列表中的第N項或是它的某些領域?

0

conveyerBelt應被聲明爲Collection<Basket >通過Collection我指的是任何Collection

0

它是一個編譯錯誤?也許關於一個符號和conveyerBelt?因爲它沒有在你給我們的片段中定義。

0

您對兩個變量使用相同的名稱(b)。這可能是你得到的錯誤的原因,但我不知道你試圖用該代碼實現什麼。

0

我覺得這是像

public void collect(int ordNum) 
{ 
    for (Basket b : conveyerBelt) { 
     if (b.getOrdNum() == ordNum) { 
      readyCollected.add(b); 
      return; // if only one occurrence wanted 
     } 
    } 
} 

假設conveyerBeltBasketreadyCollected一些收藏是Basket一些名單。