[JAVA]如何创建排名系统,然后将其保存为.txt文件?

时间:2015-07-02 18:35:46

标签: java file memory ranking

所以,我有一个"记忆游戏",你可以输入你的名字,选择难度(4x4或6x6游戏),然后开始游戏。 单击“开始”时,将弹出一个新面板,游戏将开始。

按钮将被随机化,对于您犯的每个错误,您将失去2分,并且对于每个正确的组合,您将获得10分。 最后,或者如果单击“退出”按钮,将弹出一条消息,说明玩家的名字,他做了多少尝试(点击了2个不同的按钮)以及他有多少积分。然后游戏结束,并且它不会保存玩家的分数。

现在,我的问题是,我不知道如何在我的代码中实现排名系统。这将是一些基本的东西,例如,所有分数之间的比较,并将它们重新排列到最先分数最多的那个,依此类推。

因此,根据我的研究,我需要一种Save方法,每当有人完成一个游戏时,它会将他们的分数保存在.txt文件和一个Array方法中,这样可以将得分排列为Best to Worst。

这是整个代码;

http://pastebin.com/6Wtiju7z

ServletConfig conf=getServletConfig();
String s1=conf.getInitParameter("n1");
String s2=conf.getInitParameter("n2");
out.println("n1 value is " +s1+ " and n2 is " +s2);

问题是文件总是被新的.txt覆盖 我已经尝试创建一个File类型属性,这样他就不会总是创建另一个.txt但是没有成功。

这是我需要对此代码做的最后一件事,但我似乎无法弄明白,请帮助。

3 个答案:

答案 0 :(得分:1)

  

问题是文件总是被新的.txt

覆盖

问题在这里

writer = new BufferedWriter( new FileWriter( "Ranking.txt"));

每次调用new FileWriter( "Ranking.txt")时,都会创建新的空文件。如果要向现有文件添加更多数据,则需要通过

以追加模式打开它
writer = new BufferedWriter( new FileWriter( "Ranking.txt", true));
//                                           add this part -^^^^ 

答案 1 :(得分:0)

可能这就是你在寻找什么

https://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html#FileWriter(java.lang.String,%20boolean)

只需将APPEND参数指定为true即可,您的更改不会被覆盖

答案 2 :(得分:0)

要使它不被覆盖,而是在调用FileWriter构造函数时追加传递append = true。

而不是这样做虽然我建议每次只读取和写入整个文件。这是因为必须对分数进行排序并将其重写到文件中。

我建议使用JAXB来创建XML文件。以下是使用JAXB执行此操作的教程:http://www.mkyong.com/java/jaxb-hello-world-example/