【发布时间】:2014-04-27 17:46:22
【问题描述】:
我得到一个数组越界异常。我知道它是因为数组是空的,但在尝试使用它的内容之前我会检查长度。但它甚至不会进行检查,因为它说数组导致空指针异常。有人知道为什么要扔这个吗?
这是代码
private void createGroupTree(ArrayList<String> groupList) throws JWNLException {
WordNetMeasures wordNet = new WordNetMeasures();
String[] wordResult;
for(int i = 0; i<groupList.size(); i++) {
wordResult = wordNet.getWordNetPath(groupList.get(i));
if(wordResult.length == 0) {
graph.addVertex(groupList.get(i));
} else {
for(int j=0; j<wordResult.length; j++) {
if(j !=wordResult.length-1) {
graph.addEdge(edgeFactory.create(), wordResult[j], wordResult[j+1]);
}
}
}
}
}
这是导致此问题的 getWordNetPath 方法的代码。我知道列表中的某些单词不在正在使用的字典中,我只是不知道如何处理以发出它的原因。
public String[] getWordNetPath(String word) throws JWNLException {
RiWordnet wordnet = new RiWordnet();
//String wordOne = "dog";
String[] posOfWord = wordnet.getPos(word);
int[]wordIds = wordnet.getSenseIds(word, posOfWord[0]);
String[] wordResults = wordnet.getHypernymTree(wordIds[0]);
return wordResults;
}
【问题讨论】:
-
您可能对this debugging tutorial for java beginners 感兴趣。我写它是为了帮助人们开始基本的调试。
-
要么你得到一个 ArrayIndexOutOfBoundsException 要么你得到一个 NullPointerException。你不可能两者兼得。您没有告诉我们您在哪里得到异常并没有帮助 - 而且您的代码缩进也无济于事:(
-
我都得到了。我在 wordResult = wordNet.getWordNetPath(groupList.get(i)) 行上得到 ArrayIndexOutOfBounds,在 if(wordResult.length==0) 行上得到 nullPointer。对缩进感到抱歉......我在完成编码后将其全部修复.. 奇怪的方法,但它就是我这样做的方式
-
@user3469624 实际上,您并没有得到两者,因为程序执行在第一个异常处停止。您是指不同的数据吗?
-
我在不同的时间得到这两个。有时它停在第一行,有时停在我提到的第二行。这就是为什么我很困惑...