我在这里创建了一个空的arraylist:
private ArrayList<OrderItem> conveyorBelt = new ArrayList<OrderItem>(10);
在同一个类中,我创建了一个方法,通过输入orderNum(这是一个int)将项目添加到conveyorBelt中。这就是方法的样子:
public void addToConveyorBelt( int orderNum )
{
OrderItem oi;
conveyorBelt.add(oi.getOrderNum(orderNum)); // line 4
}
这不起作用。我在第4行遇到编译错误,说:http://i52.tinypic.com/ny8n86.jpg
任何人都知道我在哪里出错了吗?
P.S。 - OrderItem包含一个名为theOrderNum的变量和一个名为getOrderNum的方法。
答案 0 :(得分:3)
根据错误消息,“getOrderNo”的方法签名不接受“int”类型的参数。从你给出的,我怀疑OrderItem类看起来像这样:
public class OrderItem {
private int theOrderNum;
OrderItem(int num) {
theOrderNum = num;
}
public int getOrderNum() {
return theOrderNum;
}
}
如果是这样,你想从orderNum参数创建一个新的OrderItem,然后将它添加到conveyerBelt:
public void addToConveyorBelt(int orderNum) {
OrderItem oi = new OrderItem(orderNum);
conveyorBelt.add(oi);
}
如果没有,您需要更新问题以包含有关OrderItem类的更多信息。
答案 1 :(得分:1)
getOrderNum显然返回一个int。你的arraylist是OrderItems
的arraylist。你期待发生什么?
不仅如此,而且因为oi
未初始化,因此您需要保留空指针异常。
答案 2 :(得分:1)
我怀疑你的方法应该是这样的:
public void addToConveyorBelt(int orderNum){
OrderItem oi = getOrderItem(orderNum);
conveyorBelt.add(oi);
}
答案 3 :(得分:0)
你可以像那样定义arraylist
private ArrayList<OrderItem> conveyorBelt = new ArrayList<OrderItem>(10);
这意味着您只能将 OrderItem
添加到列表
public void addToConveyorBelt( int orderNum )
{
OrderItem oi;
conveyorBelt.add(oi.getOrderNum(orderNum)); // here it fails
}
按如下方式更改
public void addToConveyorBelt( int orderNum )
{
OrderItem oi = new OrderItem(orderNum);
conveyorBelt.add(oi); // here it fails
}
oi.getOrderNum(orderNum)
应抛出 NullPointerException