我一直在我的代码中收到此错误,我知道它与整数不是一个数字有关,但我不确定如何解决这个问题。我确信这是非常基本的,但我也是如此,我将不胜感激。顺便说一下,这必须在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个人。每个单词/数字都在文件中各自的一行。
261
Patricia
Halangahu
1974
92
56
答案 0 :(得分:0)
假设文件不包含空行,这也可以触发NumberFormatException考虑你的情况:
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