【发布时间】:2014-09-25 17:00:02
【问题描述】:
我将读取一个包含文本文件(总共 7GB)的文件夹 (wiki-pmi),并将它们放入哈希图中。文本文件的每一行都像:地球物理毕业0.1321
我写了以下代码:
HashMap<String,Double> pmi = new HashMap<String,Double>();
File folder = new File("wiki-pmi");
String line;
File[] listofFiles = folder.listFiles();
for(File file: listofFiles)
{
if(file.isFile())
{
BufferedReader br1 = new BufferedReader(new FileReader(file));
while((line=br1.readLine())!=null)
{
String[] split=line.split(" ");
pmi.put(split[0]+ ","+ split[1], Double.parseDouble(split[2]));
}
}
}
但是,在 Eclipse 上运行后出现以下错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at NLP.main(NLP.java:30)
指向 (java:30) 到
pmi.put(split[0]+ ","+ split[1], Double.parseDouble(split[3]));
我猜是我从String类型转换为Double类型失败吧?
【问题讨论】:
-
不应该是 pmi.put(split[0]+ ","+ split[1], Double.parseDouble(split[2])); ?您正在尝试使用长度为 3 的数组的 forutrh emelent(它以 0 开头)
-
谢谢,还有其他方法可以将带有“地球物理毕业 0.1321”的文本文件放入哈希图中吗?
-
我认为你这样做的方式是正确的。您可以使用正则表达式,但在这种情况下,它会比简单的 split() 更复杂
-
@Barteks2x 根据异常它指向索引 1。
-
使用前检查 split[] 的大小。如果不是你期望的大小,打印出来并停下来看看是否有坏数据。
标签: java file-io hashmap type-conversion