gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:47:44 25 4
gpt4 key购买 nike

我有一个简单的程序,我可以从文本文件中读取内容。文本文件包含数字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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com