我正在开发一个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);
}
答案 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)