[英]java.lang.NumberFormatException: null java.lang.Integer.parseInt(Unknown Source)
[英]Integer.parseInt Error : java.lang.Integer.parseInt(Unknown Source)
我正在一个Java项目中,将每个Integer添加到下一行,直到文件中没有要读取的行。 因此,要添加它,我必须在行中使用Integer.parseInt(...),然后添加它。 PS: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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.