java - [JAVA]如何创建排名系统并将其保存到.txt 文件?

标签 java file memory ranking

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

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

现在,我的问题是,我不知道如何在我的代码中实现排名系统。这将是一些基本的事情,例如比较所有分数并将它们重新排列为分数最高的分数排在第一位,依此类推。

因此,根据我的研究,我需要一个 Save 方法,每当有人完成游戏时,它都会将他们的分数保存在 .txt 文件中,以及一个 Array 方法,将分数从最好到最差排列。

这是完整的代码;

http://pastebin.com/6Wtiju7z

private void mostrarResumoJogo() { 
    resumoJogo = "Jogador: " + objJogadorJogada.getNome() + " " +
            "Pontos: " + objJogadorJogada.getPontos() + " " +
            "Quantidade de tentativas: " + qtdeTentativas;

    JOptionPane.showMessageDialog( null, "" + resumoJogo, "Resumo do Jogo",
            JOptionPane.INFORMATION_MESSAGE ); 

    BufferedWriter writer = null;
    try {
        writer = new BufferedWriter( new FileWriter("Ranking.txt") );
        writer.write(resumoJogo);
    }
    catch ( IOException e) { }
    finally {
        try {
            if (writer != null)
                writer.close( );
        }
        catch ( IOException e) { }
    }

    setVisible( false );
}

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

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

最佳答案

The problem is that the file is always overwritten with a new .txt

问题就在这里

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

每次调用new FileWriter("Ranking.txt")时,它都会创建新的空文件。如果您想向现有文件添加更多数据,您需要通过以下方式以附加模式打开它:

writer = new BufferedWriter( new FileWriter( "Ranking.txt", true));
//                                           add this part -^^^^ 

关于java - [JAVA]如何创建排名系统并将其保存到.txt 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31192152/

相关文章:

java - 替换 Magnolias JCR 进行 hibernate

java - log4j。唯一的日志文件名

java - Android - 使用 MediaPlayer 播放 RTSP 音频流

python - python如何关闭已经被gc处理过的文件?

java - 在目录中构建文件数组

java - java中的 double 超出范围

c - 不会从文件读取到结构

c++ - 使用 `memcpy()` 为指针分配地址

python - 如何分析 Python 中的内存使用情况?

MongoDB、NUMA 硬件、页面错误但有足够的 RAM 用于工作集、touch 命令或 vmtouch/dd 未加载到内存中