Java:无法将int添加到arraylist中

时间:2010-12-25 01:19:19

标签: java object arraylist int add

我在这里创建了一个空的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的方法。

4 个答案:

答案 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