gpt4 book ai didi

Java - 我怎样才能在不因其他 readline 方法而跳过一行的情况下执行 read 方法

转载 作者:行者123 更新时间:2023-12-01 19:41:53 26 4
gpt4 key购买 nike

我正在尝试设置一个高分系统来对文件中的分数进行排序并将名称与数字分开。但是当我尝试使用 readline 两次时,由于其他 readline 方法,它会跳过 1 行。有人可以帮我吗,这是为了学校!

文件示例:

凯文:50 达斯汀:31 无人:71 imax:23

这是代码:

public class Main {
public static void main(String[] args) {
ArrayList<Integer> result = new ArrayList<>();
String name="";
try (BufferedReader br= new BufferedReader(new FileReader("res/highscore.txt"))){
while (br.ready()){
result.add(Integer.parseInt(br.readLine().split(":")[1]));
name = br.readLine().split(";")[0];
System.out.println(name);
}
Collections.sort(result);
Collections.reverse(result);
for (Integer integer : result) {
System.out.println(integer);
}
} catch (IOException e) {
e.printStackTrace();
}
}

}

最佳答案

对 @thewho69 的回答进行一些解释。

你已经陷入了副作用的陷阱。一种方法可能不仅仅执行其名称直观暗示的功能。在此示例中,readLine() 方法不仅读取即将到来的行,还将光标位置设置为下一行的开头。

这使得 readLine 方法不是幂等的,这意味着使用相同的参数(在本例中没有)调用该方法两次不一定会返回相同的输出。

为了不陷入这个陷阱,你必须找到一种方法来多次使用当前一行,同时只调用一次br.readLine()方法 - 从而设置光标在一次迭代中仅定位一次,这在本例中是理想的。这个问题的一个很好的解决方案是 @thewho69 大约 20 分钟前建议的。

关于Java - 我怎样才能在不因其他 readline 方法而跳过一行的情况下执行 read 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55093630/

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