java.lang.NumberFormatException:null-在do循环中
我的代码中不断出现这个错误,我知道这与整数不是数字有关,但我不确定如何解决这个问题。我相信这是非常基本的,但我也是,所以我将感谢任何可能的帮助。顺便说一下,这必须在do循环中完成。我知道过一会儿会更好 下面是包含所需信息的代码位。多谢各位java.lang.NumberFormatException:null-在do循环中,java,numberformatexception,Java,Numberformatexception,我的代码中不断出现这个错误,我知道这与整数不是数字有关,但我不确定如何解决这个问题。我相信这是非常基本的,但我也是,所以我将感谢任何可能的帮助。顺便说一下,这必须在do循环中完成。我知道过一会儿会更好 下面是包含所需信息的代码位。多谢各位 String firstName, surname, id; int luckynumber, lockernumber, grade, age; char grade2; try { BufferedRead
String firstName, surname, id;
int luckynumber, lockernumber, grade, age;
char grade2;
try {
BufferedReader filein = new BufferedReader(new FileReader(new File(
"studentdetails.txt")));
do {
id = filein.readLine();
firstName = filein.readLine();
surname = filein.readLine();
age = Integer.parseInt(filein.readLine());
grade = Integer.parseInt(filein.readLine());
lockernumber = Integer.parseInt(filein.readLine());
age = 2010 - age;
} while (id != null);
filein.close();
} catch (FileNotFoundException fnfe) {
System.out.println(fnfe);
} catch (NumberFormatException nfe) {
System.out.print(nfe);
} catch (IOException e) {
System.out.print(e);
}
编辑-
这是一个被读入的文件,但是有大约10个人。每个单词/数字在文件中都有自己的行
261
Patricia
Halangahu
1974
92
56
假设文件不包含空行,也可能触发NoMultFrimeExtExct,请考虑以下情况:
do {
id = filein.readLine();
//do more stuff
} while( id != null );
您通过检查id是否为null来检查是否到达了文件的末尾。但是如果id
为空,您仍然在完成迭代,解析将失败(您已经到达文件的末尾,那么age=Integer.parseInt(filein.readLine());
应该怎么做?)
那么你如何解决这个问题呢?一种方法是在读取id后立即添加检查:
do {
id = filein.readLine();
if( id == null) {
//end of stream, stop iteration
break;
}
//do more stuff
} while( true ); //you're breaking the loop from the inside already
我们不知道您正在阅读的文件的内容。检查您是否可以在
studentdetails.txt
?studentdetails.txt
和stackTrack
中添加内容示例,然后只有我们才能在外部帮助您注意:age=2010-age代码>似乎很奇怪。有了你的密码,帕特里夏现在将是36岁而不是42岁——好吧,她可能会喜欢;)你确定不同的人之间没有空行吗?如果有,您必须添加一些内容来处理该问题。它也可能返回“7”而不是“7”@Stultuske是的,这是可能的,但我只是在回答手头的问题,我故意不涵盖所有可能的错误(例如,id
也可能有一行,但在->“损坏”文件之后也没有更多的行).谢谢你解决了这个问题,我仍然得到了正确的输出,我真的很感谢你抽出时间来帮助我谢谢:)