2017-07-29 49 views
0

我有一个大String被转换成Stop对象,但我每次使用此功能时返回java.lang.NumberFormatException: Invalid int: "1" 我不明白为什么"1"不是有效String待转换Int ...java.lang.NumberFormatException:无效INT:“1”

我在哪里错了?

private static List<List<String>> rawToList(String string) { 
    List<List<String>> result = new ArrayList<>(); 

    for (String row : Arrays.asList(string.split("\n"))) 
     result.add(Arrays.asList(row.split(","))); 

    result.remove(0); 

    return result; 
} 

private static List<Stop> rawToStops(String string) { 
    List<Stop> stops = new ArrayList<>(); 

    for (List<String> entity : rawToList(string)) 
     stops.add(new Stop(
       entity.get(0), 
       entity.get(1), 
       entity.get(2), 
       entity.get(3), 
       Double.parseDouble(entity.get(4)), 
       Double.parseDouble(entity.get(5)), 
       Integer.parseInt(entity.get(6)), 
       Integer.parseInt(entity.get(7)))); 

    return stops; 
} 

String是相当长。我从this txt文件中读取它。

+2

显示了输入的字符串,也rawToList'是如何实现的'。帮助我们帮助你... – alfasin

+1

该字符串包含的不仅仅是1,那么如何使用调试器来检查该字符串真正包含的内容? – Tom

+0

可能重复[什么是NumberFormatException,我该如何解决它?](https://stackoverflow.com/questions/39849984/what-is-a-numberformatexception-and-how-can-i-fix-it) – xenteros

回答

3

解决

我必须删除非打印Unicode字符与此:

string.replaceAll("\\p{C}", ""); 
+0

只是检查它回答 –

+0

我不能接受我自己的答案在2天内 _stackoverflow rules_ –

+1

超级只是检查它时间允许;) –

相关问题