读取文件输入时出现java.lang.NumberFormatException

时间:2015-07-17 16:54:30

标签: java file exception

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我才会收到这样的错误?

2 个答案:

答案 0 :(得分:2)

检查lineSplit [0]长度是否为4然后有一个不可见的字符,即ZERO WIDTH NO-BREAK SPACE。它很难检测,因为它是不可见的,修剪不会删除该字符。如果是这样,你需要摆脱那个角色

编辑: 正如你所说它的长度是4.尝试这个LineSplits[0].replace(u'\ufeff', '')或你可以自己写这个号码而不是从某个地方复制它

你可以在这个SO Question 上查看关于这个角色的长时间的讨论,虽然这是关于HTML但是有意义的是这个角色是如何出现的

答案 1 :(得分:0)

如果您是MapReduce编程的新手,并且只是从样本输入文件中学习您从Web上粘贴的副本,那么只需手动创建输入文件,因为在复制粘贴期间,某些UTF字符也会被粘贴。

我通过手动创建示例文件解决了这个问题。