我坚持这个我正在上学的课程。这是我的代码:
public static void experiencePointFileWriter() throws IOException{
File writeFileResults = new File("User Highscore.txt");
BufferedWriter bw;
bw = new BufferedWriter(new FileWriter(writeFileResults, true));
bw.append(userName + ": " + experiencePoints);
bw.newLine();
bw.flush();
bw.close();
FileReader fileReader = new FileReader(writeFileResults);
char[] a = new char[50];
fileReader.read(a); // reads the content to the array
for (char c : a)
System.out.print(c); // prints the characters one by one
fileReader.close();
}
我面临的困境是如何根据int experiencePoints的数值对writeFileResults中的分数进行排序?如果您想知道变量userName是由textfield.getText方法分配的,当您按下36个按钮之一时会发生一个事件,该按钮会启动带有24个可能结果之一的math.Random语句。它们都为experiencePoints添加了不同的整数。
答案 0 :(得分:0)
好吧,我不想做你的作业,这似乎是介绍性的,所以我想给你一些提示。
首先,缺少一些东西:
oldScores
userName
或experiencePoints
的引用
醇>
如果您可以添加此信息,则可以简化此过程。我可以推断出事情,但后来我可能错了,或者更糟糕的是,你没有学到任何东西,因为我为你做了任务。 ;)
编辑:
因此,根据额外信息,您的数据文件中包含一个"数组"用户名和经验值。因此,最好的方法(读取:最佳设计,而不是最短)将加载到自定义对象然后编写比较器函数(读取:实现抽象类Comparator)。
因此,在伪Java中,你有:
声明您的数据类型:
private static class UserScore {
private final String name;
private final double experience;
// ... fill in the rest, it's just a data struct
}
List<UserScore>
对象,其中包含从文件中读取的所有值(我会让您想到这一部分)获得列表后,您可以使用Collections#sort对列表进行排序,使其成为正确的顺序,以下是此示例:
// assuming we have our list, userList
Collections.sort(userList, new Comparator<UserScore>() {
public int compare(UserScore left, UserScore right) {
return (int)(left.getExperience() - right.getExperience()); // check the docs to see why this makes sense for the compare function
}
}
// userList is now sorted based on the experience points
根据需要重新编写文件。您现在有一个排序列表。