Cir*_*zer 2 java iterator arraylist
我有一个实现另一个超类的接口测试类.在测试类中,我有一个方法,它应该从数组列表返回一个对象; 首先它应该检查列表中的对象以查看它是否存在,如果不存在,它将返回null,否则它将返回找到的对象.这是我实现的代码:
public class ProductDBImpl implements ProductDB {
// field declarations
ArrayList<Product> products = new ArrayList<Product>();
@Override
public Product getProduct(int productId)
{
// TODO Auto-generated method stub
// create an iterator for the Arraylist
Iterator<Product> pritr = products.iterator();
while(pritr.hasNext())
{
Product pr = pritr.next();
if (pritr.next().getId() == productId)
{
return pr;
}
else
{
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是我收到的错误是:此方法必须返回Product类型的结果.
我的印象是,通过使用迭代器并循环遍历列表中的每个元素,每个元素都是一个类型Product.请帮我识别我的错误.
你的return陈述正在返回,Product或者null都是合法的getProduct.但是,如果没有s ,马上就会pritr.hasNext()回来怎么办?如果循环退出则没有声明.falseProductreturnwhile
循环return后添加一个语句while.
另外,因为你总是在while循环的第一次迭代中返回一些东西,所以它不必是一个循环.您可以将其更改为if不更改任何其他内容.
但这真的是你想要的吗?null如果找到的第一个产品不匹配则返回没有意义.您可能需要考虑删除该else块,以继续搜索列表(而不是更改while为if).
| 归档时间: |
|
| 查看次数: |
842 次 |
| 最近记录: |