java.lang.NumberFormatException: null - 在 do 循环中
java.lang.NumberFormatException: null - in a do loop
我的代码中不断出现此错误,我知道它与整数不是数字有关,但我不确定如何解决此问题。我确定这是非常基本的,但我也是,所以我将不胜感激任何可能的帮助。顺便说一句,这必须在 do 循环中完成。我知道过一会儿会好些。
这里是包含所需信息的代码位。谢谢你。
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 个人一起读入的文件。每个 word/number 在文件中各占一行。
261
Patricia
Halangahu
1974
92
56
假设文件不包含也可能触发 NumberFormatException 的空行,请考虑您的情况:
do {
id = filein.readLine();
//do more stuff
} while( id != null );
您正在通过检查 id 是否为空来检查是否到达文件末尾。但是,如果 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
我的代码中不断出现此错误,我知道它与整数不是数字有关,但我不确定如何解决此问题。我确定这是非常基本的,但我也是,所以我将不胜感激任何可能的帮助。顺便说一句,这必须在 do 循环中完成。我知道过一会儿会好些。
这里是包含所需信息的代码位。谢谢你。
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 个人一起读入的文件。每个 word/number 在文件中各占一行。
261
Patricia
Halangahu
1974
92
56
假设文件不包含也可能触发 NumberFormatException 的空行,请考虑您的情况:
do {
id = filein.readLine();
//do more stuff
} while( id != null );
您正在通过检查 id 是否为空来检查是否到达文件末尾。但是,如果 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