java - Java 中数组中 String 的类型转换抛出 "Unknown Source Error"

标签 java arrays list type-conversion

我正在尝试使用 java 解析 CSV 文件并获取一些 id

我已经传递了列表中的内容,每个列表元素都包含来自 csv 文件的一行信息,其格式为 user_id、poi_id、times_visited,如下所示:

enter image description here

传递所有内容后,我使用 .split(",") 来分解数组中每个记录内的内容,以便于访问。

现在,当我尝试使用以下代码使用 parseInt 将 poi_id 从字符串转换为整数时:

    ArrayList<POI> poi_list = new ArrayList<POI>();
    for(int i=0; i<lista.size(); i++) {
        String checking = lista.get(i);
        String[] checking_array = checking.split(",");
        System.out.println("checking_array's second element for list.get("+i+") is: "+checking_array[1]);
        int id = Integer.parseInt(checking_array[1]);
        POI item = new POI(id);
        poi_list.add(item);
    }

我收到此错误:

enter image description here 正文:

checking_array's second element for list.get(0) is:  149   
Exception in thread "main" java.lang.NumberFormatException: For input string: "
    149"
            at java.lang.NumberFormatException.forInputString(Unknown Source)
            at java.lang.Integer.parseInt(Unknown Source)
            at java.lang.Integer.parseInt(Unknown Source)
            at M.main(M.java:28)

现在,当我检查数组的第一个元素(尽管这不是我想要的)时,它会被正确转换并且与此代码完美地流动:

 ArrayList<POI> poi_list = new ArrayList<POI>();
        for(int i=0; i<lista.size(); i++) {
            String checking = lista.get(i);
            String[] checking_array = checking.split(",");
            System.out.println("checking_array's second element for list.get("+i+") is: "+checking_array[1]);
            int id = Integer.parseInt(checking_array[0]);
            POI item = new POI(id);
            poi_list.add(item);
        }

结果:

enter image description here

正文:

checking_array's second element for list.get(8458) is:  475
checking_array's second element for list.get(8459) is:  526
checking_array's second element for list.get(8460) is:  542
checking_array's second element for list.get(8461) is:  866
checking_array's second element for list.get(8462) is:  927
checking_array's second element for list.get(8463) is:  1055
checking_array's second element for list.get(8464) is:  1083
checking_array's second element for list.get(8465) is:  1318
checking_array's second element for list.get(8466) is:  1372
checking_array's second element for list.get(8467) is:  1501
checking_array's second element for list.get(8468) is:  1931
checking_array's second element for list.get(8469) is:  1942

这让我很困惑,因为数组似乎是可以访问的,当我将其打印为字符串时一切都很好,但是当我专门尝试第二个元素时,它无法转换为整数?

最佳答案

从输出的间隔方式来看,其中可能有一个前导空格字符,这可能会导致解析问题。试试这个:

int id = Integer.parseInt(checking_array[1].trim());

关于java - Java 中数组中 String 的类型转换抛出 "Unknown Source Error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49844621/

相关文章:

python - 如何将列表的每个元素写入文本文件的每一行?

java - 方法 `isEqualToComparingFieldByFieldRecursively` 的模拟

java - 如何设置 java.sql.Timestamp UTC 时间?

c# - 如何在 C# 中对分隔字符串数组进行数字排序

java - 获取字符串和逗号后面的值,如果有字符 '|' 则结束

jQuery - 获取嵌套列表子项的路径

java.lang.NoSuchFieldError : REFLECTION during Tomcat deploying 错误

java - DeepLearning4j k-均值非常慢

java - JSONArray 奇怪的结果

list - PROLOG 打印以 7 结尾且其数字之和大于 100 的数字