java - 将从文本文件读取的字符串解析为整数

标签 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 这让我相信 linenull

问题是,为什么 line 变量为 null ?它是在 while 循环 中初始化的,那么它怎么会在方法结束时为 null 呢?

PS. 从文件中正确读取数字,如果我将 writeFile(line); 移动到 readFile 的 while 循环 方法,它不会抛出任何异常,并且我的程序按预期工作。

最佳答案

有几件事。对 writeFile() 的调用应该位于 try block 内,因为如果读取失败,则运行它是没有意义的。

你的错误也是因为

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

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

要么你想写每一行,然后 writeFile 应该在循环中,或者你需要找出你想要的行并保存它。

关于java - 将从文本文件读取的字符串解析为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48050623/

相关文章:

java - 如何在Elasticsearch中搜索长度为0的字符串?

c# - .NET 中的 RSA 加密 - JAVA 中的解密 -> Java 抛出 "modulus not positive"错误

java - 在不知道 H2 数据库中的插入顺序的情况下断言预期的 DB 值

java - "reuse"CompletableFuture 是否安全/良好实践

java - 有没有一种优雅的方法可以在指定的超时时间内处理多个 future?

Java/Android 将列表项添加到其他列表

java - 如何对调用 Jersey 客户端 API 的代码进行单元测试?

java - 最常访问的最大 URL 序列

java - BigDecimal.ZERO 与新的 BigDecimal(0)。使用哪个,为什么?

java - "incompatible datatypes in combination"查询日期值时出错