繁体   English   中英

将从文本文件读取的String解析为Integer

[英]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而导致我相信, linenull

问题是,为什么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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM