File folderPathFile = new File("C:\\Users\\ali\\Desktop\\folderPath.txt");
BufferedReader reader = new BufferedReader(new FileReader(folderPathFile));
String line = reader.readLine();
while(line != null){
foldersPath.add(line);
line = reader.readLine();
}
reader.close();
String lineDup = line.toString();
String[] LineSplits = lineDup.split(",");
String[] array = LineSplits[1].trim().split(" ");
for(int i =0; i<array.length;i++) {
int fr = Integer.parseInt(array[i]);
System.out.println(fr);//its printing
}
int fr1 = Integer.parseInt(LineSplits[0]);
System.out.println(fr1);
}
我的问题是当我运行此代码时{i} java.lang.Exception: java.lang.NumberFormatException: For input string: "900"
INPUT i&#39; m给予,即myfile数据为900,200 300 400 500 600
为什么只有900我才会收到这样的错误?
答案 0 :(得分:2)
检查lineSplit [0]长度是否为4然后有一个不可见的字符,即ZERO WIDTH NO-BREAK SPACE。它很难检测,因为它是不可见的,修剪不会删除该字符。如果是这样,你需要摆脱那个角色
编辑:
正如你所说它的长度是4.尝试这个LineSplits[0].replace(u'\ufeff', '')
或你可以自己写这个号码而不是从某个地方复制它
你可以在这个SO Question 上查看关于这个角色的长时间的讨论,虽然这是关于HTML但是有意义的是这个角色是如何出现的
答案 1 :(得分:0)
如果您是MapReduce编程的新手,并且只是从样本输入文件中学习您从Web上粘贴的副本,那么只需手动创建输入文件,因为在复制粘贴期间,某些UTF字符也会被粘贴。
我通过手动创建示例文件解决了这个问题。