我需要一个方法使用for循环的帮助
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的购物篮中。
我猜你的错误是传送带不能迭代。要使用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
}
您不能提供足够的信息来正确解决此问题。
- 什么是错误?
- 什么类型的传送带和准备收集?
此外,你是什么意思的“订单号” - 列表中的第N项或是它的某些领域?
conveyerBelt
应被声明为Collection<Basket >
通过Collection
我指的是任何Collection
它是一个编译错误?也许关于一个符号和conveyerBelt
?因为它没有在你给我们的片段中定义。
您对两个变量使用相同的名称(b)。这可能是你得到的错误的原因,但我不知道你试图用该代码实现什么。
我觉得这是像
public void collect(int ordNum)
{
for (Basket b : conveyerBelt) {
if (b.getOrdNum() == ordNum) {
readyCollected.add(b);
return; // if only one occurrence wanted
}
}
}
假设conveyerBelt
是Basket
和readyCollected
一些收藏是Basket
一些名单。
给出错误信息 - 还有,什么版本的java? – 2011-02-08 18:21:16
您的错误信息与您提供的代码不符,请告诉我们正确的代码 – 2011-02-08 18:25:51
花时间抄录错误信息而不是张贴屏幕截图,不胜感激。这次为你做了。 :) – 2011-02-08 18:26:29