2010-11-01 90 views
1

我已经遇到了以下问题:我有一个私有成员像这样一个Java类:爪哇 - NullPointerException异常的Array

private Arcs[] arcs; 

这不是在构造函数初始化,因为我不知道的长度我的矢量,但它是在读取函数中初始化的,我从文件中读取信息。 在这个功能我执行以下操作:

arcs = new Arcs[n]; //n is a number read from file 

然后有一个while循环中,我从文件中读取其他的东西,我有这样的:

while(condition){ 
... 
arcs[i].add(blah); //i is a valid number, smaller than n, and the add function is also correct 
... 
} 

但在这里我有一个错误说NullPointerException,我不明白为什么。如果有人向我解释发生了什么,我将不胜感激。

回答

9

你实际上曾经在arcs[i]存储Arcs对象吗?如果不是,则arcs[]的所有元素将被初始化为空。 (因此,NPE)

做这样的事情:

while(condition){ 
    // ... 
    arcs[i] = new Arcs(); 
    arcs[i].add(blah); 
    // ... 
} 

参考:

+0

我不能这样做,因为我可能在不止一个循环中反驳相同的弧线[i],这意味着一遍又一遍地初始化它,最后我不会有所有的我需要的信息。我也试图在此之前做到这一点,但仍然不好。 – Sireny 2010-11-01 07:50:26

+0

@Sireny,你可以做'if(arcs [i] == null){arcs [i] = new Arcs(); }'。不过,可能有更清晰的方法来处理这个问题。 – 2010-11-01 07:54:48

+0

好的,我再次尝试,现在它的工作原理...我用循环来初始化所有元素,现在没关系。我只是不明白它为什么不起作用。无论如何,感谢大家的帮助:) – Sireny 2010-11-01 07:55:02