[英]Parsing String read from a text file to Integer
我有一个简单的程序,可以从文本文件中读取。 文本文件包含数字99
。 我使用名为readFile
的方法读取了此数字。 读取后,我然后调用writeFile
方法,该方法将从文本文件读取的数字增加1
,然后再次将其保存在文本文件中。
从文件读取的方法
public void readFile() {
String line = "";
try(FileReader fr = new FileReader("Room Number.txt");
BufferedReader br = new BufferedReader(fr)) {
while((line = br.readLine()) != null) {
roomNumberField.setText(line);
}
} catch (IOException ex) {
ex.printStackTrace();
}
writeFile(line);
}
问题
如您在上述方法中所看到的,我正在String
变量line
从文件读取数据,并且在该方法的结尾,我调用writeFile
方法并将line
变量传递给此方法。 在writeFile
方法中,在将line
变量加1
,我必须将其解析为int
但这样做会引发NumberFormatException
。 现在以我为例,仅当无法将line
解析为int
才会引发此异常。 起初我以为这可能是因为line
包含任何变量space
,所以我叫trim
方法就可以了,然后扔NullPointerException
而导致我相信, line
是null
。
问题是,为什么line
变量为null? 它在while loop
初始化,所以在方法末尾如何将其为null?
PS。 从文件正确读取编号,如果我移动writeFile(line);
在readFile
方法的while loop
内部,它不会引发任何异常,并且我的程序可以正常工作。
几件事。 您对writeFile()
调用应在try块内,因为如果读取失败,则没有必要运行它。
另外你的错误是因为
while((line = br.readLine()) != null) {
roomNumberField.setText(line);
}
该循环一直运行到line == null
为止。 因此,在退出之后(在调用writeFile()
之前),该值将为null
。
您要么想写每一行,要么writeFile
应该在循环中,或者您需要弄清楚要保存的那一行。
当line
get等于null
时,答案很简单
while((line = br.readLine()) != null) {
while循环中断,并且循环外部该位置的line
null
。 而在循环line
内总是有一些值,因为它在循环内:)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.