Java: не могу добавить int к массиву - PullRequest
0 голосов
/ 25 декабря 2010

Я создал пустой массив данных здесь:

private ArrayList<OrderItem>  conveyorBelt = new ArrayList<OrderItem>(10);

И в том же классе я создал метод, в котором я добавляю элемент в шток конвейера, вводя orderNum (который является целым числом). Вот как выглядит метод:

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 ]

3 голосов
/ 25 декабря 2010

Согласно сообщению об ошибке, сигнатура метода "getOrderNo" не принимает параметр типа "int".Из того, что вы дали, я подозреваю, что класс OrderItem выглядит примерно так:

public class OrderItem {
    private int theOrderNum;

    OrderItem(int num) {
        theOrderNum = num;
    }

    public int getOrderNum() {
        return theOrderNum;
    }
}

Если так, вы хотите создать новый OrderItem из параметра orderNum, а затем добавить его к*

public void addToConveyorBelt(int orderNum) {
    OrderItem oi = new OrderItem(orderNum);
    conveyorBelt.add(oi);
}

Если нет, вам нужно обновить вопрос, чтобы включить больше информации о классе OrderItem.

1 голос
/ 25 декабря 2010

Я подозреваю, что ваш метод должен выглядеть примерно так:

public void addToConveyorBelt(int orderNum){
    OrderItem oi = getOrderItem(orderNum);
    conveyorBelt.add(oi); 
}
1 голос
/ 25 декабря 2010

getOrderNum, очевидно, возвращает int. Ваш arraylist является arraylist OrderItems. Что вы ожидаете, что произойдет?

Мало того, вы гарантированы исключение нулевого указателя, потому что oi не инициализирован.

0 голосов
/ 25 декабря 2010

вы определяете 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

...