gpt4 book ai didi

java - 在 while 循环的谓词中赋值 - BufferedReader

转载 作者:行者123 更新时间:2023-12-01 18:39:52 27 4
gpt4 key购买 nike

我有一段代码,如下所示:

public void cinemaFromFile(String fileName) throws IOException {

BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line;
while ((line = reader.readLine()) != null) {

if (line.equals("Movies")) {

while ((line = reader.readLine()) != null
&& !line.equals("Theaters")) {

String currentline = line;
String[] parts = currentline.split(":");
String part1 = parts[0];
String part2 = parts[1];
movies.add(new Movie(part1, part2));
}
}

reader.close();
}

如您所见,我在 while 循环的终止子句中为 line 分配了一个值。

我是 BufferedReaders 的新手,我正在寻找替代方案。 IE,我希望将赋值语句(“line = reader.readLine()”)放在一个单独的语句中,位于 while 循环终止子句的外部。

我尝试将“line = reader.readLine()”移动到 while 循环的主体中,但这不起作用。我也尝试过将其放在 while 循环之前,但这也不起作用。

我认为我从根本上误解了 BufferedReaders 的工作原理,它们只能迭代 while 循环中的行吗?

最佳答案

要将赋值从 while 循环条件中取出,您必须了解 while 循环条件在第一次迭代之前和每次迭代结束后计算一次迭代。

您可以通过将赋值放置在 while 循环开始之前,并将其添加到 while 循环体的末尾来模拟这一点。

line = reader.readLine();
while (line != null) {
// Rest of body is untouched

// Read again at the end.
line = reader.readLine();
}

这将进行相同的操作。它甚至可能比在 while 循环的条件中进行赋值更清晰一些,即使它不太简洁。

BufferedReader 在这方面对 while 循环没有做任何特别的事情。当调用 readLine() 并且没有剩余输入时,它只是返回 null

关于java - 在 while 循环的谓词中赋值 - BufferedReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20388032/

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