我将Double
存储到List<Double>
时遇到了麻烦。
int idx = 0;
String [] documentText = getText();
for(String word : wordList) {
wordsDistributionList.put(word, new ArrayList<Double>());
}
// ...
if ( wordsDistributionList.containsKey(word.toLowerCase()) == true ) {
List<Double> dbls = wordsDistributionList.get(word);
double dbl = ((double)idx/(double)documentText.length);
dbls.add(new Double(dbl));
break;
}
做这样的事情导致:
Exception in thread "main"
java.lang.NullPointerException
at worddistribution.DocumentsStatistics.getWordDistribution(DocumentsStatistics.java:57)
at worddistribution.Main.main(Main.java:34)
有人能告诉我如何在列表中存储Double
吗?
答案 0 :(得分:2)
如果
,则需要初始化列表List<Double> dbls = wordsDistributionList.get(word);
返回null,然后当您尝试添加Double时,列表将为null。
确保wordsDistributionList.get(word)
不返回null,如果确实如此,则显式初始化列表...
喜欢@ZouZou说试试:
List<Double> dbls = wordsDistributionList.get(word.toLowerCase());
但如果仍然返回null,那么问题是你没有初始化你想要返回的列表。
答案 1 :(得分:0)
您正在测试wordsDistributionList
(显然是地图而不是列表)是否包含密钥word.toLowerCase()
,但是获取密钥word
的值。这可能很容易为空。
仅供参考,而不是
if(wordsDistributionList.containsKey(word.toLowerCase()) == true)
只需写下
if(wordsDistributionList.containsKey(word.toLowerCase()))
而不是
dbls.add(new Double(dbl));
只需写下
dbls.add(dbl);
后者称为autoboxing。