-4

当我调用 add 方法时,我不断收到空指针异常,代码看起来不错,但我不知道出了什么问题。

public class CarRunner {

public static void main(String[] args) {
    TrafficLight light = new TrafficLight();
    RoadRunnable run1 = new RoadRunnable(1,light);
    String car="car";
    for (int i =0;i<100;i++)
    {
        car="car"+i;
        run1.add(car);
    }

    Thread traffic1 = new Thread(run1);
    traffic1.start();
}

}

public class RoadRunnable implements Runnable{

private LinkedList<String> queue;

private int number;

private TrafficLight light;

public RoadRunnable(int roadNumber, TrafficLight aLight) 

{ 
    number = roadNumber;

    light = aLight;

}

public void add(String car)

{

    queue.add(car);


}
 }
4

4 回答 4

2

queue没有被暗示。在您的构造函数中,您可能想要执行以下操作:

queue = new LinkedList<String>();
于 2013-07-30T04:08:58.123 回答
0

您没有初始化队列。

private LinkedList<String> queue = new LinkedList<String>();

代替

private LinkedList<String> queue;

初始化LinkedList的参考

于 2013-07-30T04:15:17.233 回答
0

当您尝试访问空对象方法或参数时,会发生空指针异常。在您的代码中,您尚未初始化队列:

private LinkedList<String> queue

因此在尝试使用 类queue.add(car);的 add 方法在队列中添加元素时面临空指针异常RoadRunnable

您应该在声明或构造函数中初始化队列,例如:

public RoadRunnable(int roadNumber, TrafficLight aLight) 
{ 
    // queue initilization
    queue = new LinkedList<String>();
    number = roadNumber;
    light = aLight;
}
于 2013-07-30T04:08:46.903 回答
0

RoadRunnable 类中的任何内容都不会为要指向的队列变量创建实际的 LinkedList;因此 queue 为空,当你尝试使用它时你会得到 NPE。

于 2013-07-30T04:10:41.040 回答