2011-02-08 129 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一些名单。