1

我通过以下方式创建了一个数组(使用此方法的第二个答案):

public static LinkedList<Connection>[] map;
...  // later ....
map = (LinkedList<Connection>[]) new LinkedList[count];

当我运行我的程序时,我在这个for循环内的行中得到一个 NullPointerException:

for (int j = 0; j < numOfConnections; j++) {
    map[i].add(new Connection(find(s.next()), s.nextDouble(), s.next()));  // NPE!
}

有人可以告诉我为什么会抛出这个异常吗?

4

1 回答 1

2

map充满了null创建数组的时间。您需要自己初始化每个成员。

// Initialize.
for (int j = 0; j < numOfConnections; j++) {
//                  ^ I assume this means 'count' here.
    map[j] = new LinkedList<Connection>();
}

// Fill
for (int j = 0; j < numOfConnections; j++) {
    map[j].add(new Connection(find(s.next()), s.nextDouble(), s.next()));
//      ^ BTW I think you mean `j` here.
}

(如果你愿意,可以结合这两个步骤。)

于 2012-12-09T19:54:50.703 回答