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

Integer.parseInt错误:java.lang.Integer.parseInt(未知源),java,Java,我正在进行一个Java项目,将每个整数添加到下一行中的整数,直到文件中没有可读取的行为止。 所以为了能够添加它,我必须使用Integer.parseInt。。。添加到行,然后添加它。 注意:for循环只会跳过包含文件头的两行。所有字符串都引用Integer.parseInt接受的数字 以下是完整的异常错误: Exception in thread "main" java.lang.NumberFormatException: null at java.lang.Integer.parseInt(

我正在进行一个Java项目,将每个整数添加到下一行中的整数,直到文件中没有可读取的行为止。 所以为了能够添加它,我必须使用Integer.parseInt。。。添加到行,然后添加它。 注意: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);

    }

我认为这是你的问题:

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

    }

你给readLine打了两次电话。您应该将初始结果存储在一个变量中,以及导致parseInt调用的重用。

此块实际上读取的是两行,而不是一行

while (bufferedReader.readLine() != null)
{
    result += Integer.parseInt(bufferedReader.readLine());
}
当在while条件检查中读取最后一行时,会发生错误,然后块的内部将读取null,因为没有更多的行要读取

将这样的循环编写为:

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

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

第二:你应该试着抓住下面的线

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

不管读什么,都不是数字。检查您的数据源。它实际上是一个数字,下面是实际使用的log.txt文件源:15 13 20 20每个数字在一行中尝试调试,您将看到错误!能否请您澄清我应该如何将初始结果存储在变量中,并根据需要进行加法。@user2774643-按照Mark Elliot在其答案中的建议进行加法。使用此方法,我只能得到结果=20;因为它应该等于40,因为应该添加的两行包含:20,我知道了,我的错误是:I=0;我