我想从我的驱动程序位置读取一个文件并将文件数据解析为映射,文件类型文本和包含数据如下所示
dhaka : 1 : jamalpur City : 2
khulna City : 3 : Bangladesh : 1
我正在尝试解决这个问题,但总是无法解决。请帮助我, 这是我的代码
Map < String, Integer > amap = new HashMap < String, Integer > ();
try {
BufferedReader buf = new BufferedReader(new FileReader("D:\\t.txt"));
String ss = null;
while ((ss = buf.readLine()) != null) {
String[] pair = ss.split(":");
for (int i = 0; i < pair.length; i += 2)
amap.put(pair[i], Integer.parseInt(pair[1 + i]));
}
buf.close();
for (Map.Entry em: amap.entrySet()) {
System.out.println(" " + em.getKey() + " " + em.getValue());
}
} catch (Exception e) {e.printStackTrace( );}
显示java.lang.ArrayIndexOutOfBoundsException
请解决这个问题
最佳答案
数字周围的空格字符导致 NumberFormatException,并且城市名称周围有空格字符,因此更改此行
amap.put(pair[i], Integer.parseInt(pair[1 + i]));
对此
amap.put(pair[i].trim(), Integer.parseInt(pair[1 + i].trim()));
将 catch block 留空是一个非常糟糕的做法,它隐藏了问题(在本例中为 NumberFormatException)。
关于java - 如何将字符串解析为映射,使用java从文件位置读取的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27850360/