我正在尝试使用 java 解析 CSV 文件并获取一些 id。
我已经传递了列表中的内容,每个列表元素都包含来自 csv 文件的一行信息,其格式为 user_id、poi_id、times_visited,如下所示:
传递所有内容后,我使用 .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);
}
我收到此错误:
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);
}
结果:
正文:
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/