解析字符串从文本文件读取到整数

时间:2018-01-01 14:51:08

标签: java

我有一个简单的程序,我从文本文件中读取。文本文件包含数字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 1}}是line

问题是,为什么while loop变量为空?它在writeFile(line);中初始化,那么在方法结束时它怎么能为空呢?

PS。正确地从文件中读取数字,如果我在while loop方法的readFile内移动parser,则不会抛出任何异常,我的程序可以正常工作。

2 个答案:

答案 0 :(得分:4)

一些事情。您对writeFile()的调用应该在try块内,因为如果读取失败,则无法运行它。

您的错误也是因为

while((line = br.readLine()) != null) {
           roomNumberField.setText(line);
       }

此循环一直运行到line == null。因此,在退出之后(在调用writeFile()之前),该值将为null

要么你想写每一行,那么writeFile应该在循环中,或者你需要弄清楚你想要哪一行并保存它。

答案 1 :(得分:2)

line等于<{p>中的null时,

答案很简单

while((line = br.readLine()) != null) {

while循环中断,line在循环外的这个位置有null值。虽然循环内部line总是有一些值,因为它在循环内部。)。