Integer.parseInt错误:java.lang.Integer.parseInt(未知来源)

时间:2013-09-13 02:52:12

标签: java

我正在开发一个Java项目,将每个Integer添加到下一行中的那个,直到文件中没有要读取的行。 所以为了能够添加它我必须使用Integer.parseInt(...)到行然后添加它。 P.S:for循环将跳过两行包含文件头的行。并且所有字符串都引用了Integer.parseInt()接受的数字。

以下是完整的异常错误:

Exception in thread "main" java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at prog.Result(prog.java:93)
at prog.main(prog.java:56)

导致异常的代码是:

public static void Result() throws IOException
    {
        FileReader fileReader = new FileReader(dir+"/"+log_file);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        int i;
        for (i=0;i<=2;++i)
        {
            bufferedReader.readLine();
        }
        int result =0;
        while (bufferedReader.readLine() != null)
        {
            result += Integer.parseInt(bufferedReader.readLine());

        }
        System.out.println("The Result Is : " + result);

    }

3 个答案:

答案 0 :(得分:5)

我认为这是你的问题:

    while (bufferedReader.readLine() != null)
    {
        result += Integer.parseInt(bufferedReader.readLine());

    }

你在那里打电话readLine()两次。您应该将初始结果存储在变量中,并将重用存储在parseInt()调用中。

答案 1 :(得分:5)

这个块实际上是在读取两个行,而不是一行。

while (bufferedReader.readLine() != null)
{
    result += Integer.parseInt(bufferedReader.readLine());
}

while条件检查中读取最后一行时发生错误,然后块的内部将读取null,因为没有更多行要读取。

将这样的循环写成:

是惯用的
String line;
while ((line = bufferedReader.readLine()) != null)
{
    result += Integer.parseInt(line);
}

答案 2 :(得分:0)

首先:您应该检查文件中的数据,以确保所有行都是数字。

第二:你应该尝试抓住下面的行

try {
    result += Integer.parseInt(bufferedReader.readLine());
} catch(Exception ex)