读取时出现Java NumberFormatException

时间:2016-10-21 06:21:34

标签: java exception exception-handling

这是我制作的代码的一部分。 读者似乎读了第一个字符串" 2"但由于某种原因,它没有将其转换为整数。

public void fileinput2() 
{
try 
{
        BufferedReader file=new BufferedReader(new FileReader("ddv.txt"));
        try 
{
            while((line=file.readLine())!=null){
                String[] s=line.split("\\t+");
                int firstindex=Integer.parseInt(s[0].trim());
                int secondindex=Integer.parseInt(s[1].trim());
                                    adj[firstindex-1][secondindex-1]=1;
                adj[secondindex-1][firstindex-1]=1;
                                    /*for(int i=0;i<s.length;i++)
                                    {System.out.println(s[i]);
                                    int x=Integer.valueOf(s[i].trim());
                                    }*/

                }
        } catch (NumberFormatException | IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

DDV是一个文本文件,如下所示:

2    8
6    9
4    10

等等。

但是我收到此错误

java.lang.NumberFormatException: For input string: "2"
at       
    java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615).

请帮帮我谢谢。)

1 个答案:

答案 0 :(得分:0)

它不是真实的&#34; 2&#34;,在&#34; 2&#34;之前你有不可打印的符号\ uFEFF。它在您的文件中是不可见的utf-8前缀

你可以分析文件的第一个字符,或者只是添加懒惰的s.replace(&#34; \ uFEFF&#34;,&#34;&#34;)或用正则表达式解析行