java - 如何将字符串解析为映射,使用java从文件位置读取的字符串

标签 java dictionary hashmap bufferedreader filereader

我想从我的驱动程序位置读取一个文件并将文件数据解析为映射,文件类型文本和包含数据如下所示

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/

相关文章:

java - 如何通过提供值从 HashMap 获取键?

hashmap - LinkedHashMap的排序

使用 Jackson Core Streaming API 时出现 java.lang.NoSuchMethodError

python-3.x - 打印在 map 中时不打印,Python

json - 将 JSON 解码为 map

python - 在 Python3 中对包含字典的列表进行排序

java - 如何为 HashMap 值动态创建表

java - Adobe CQ。获取当前页面路径

java - JSF 同时登录 两个用户

java - 在 HBase 中存储和更新 Set 的最佳方式是什么?