使用JavaIO保存统计数据

使用JavaIO保存统计数据,java,3d,Java,3d,我设置了一个文件和一个基本的读写器,但是当我更改值时,它不会写入新值 代码如下: 国际构成水平、实力水平 int[] saveStats = { constitutionLevel, strengthLevel }; int constitutionLevelLocation = 0; int strengthLevelLocation = 1; public StatSaver() { constitutionLevel = Constitution.getConstitution

我设置了一个文件和一个基本的读写器,但是当我更改值时,它不会写入新值 代码如下:

国际构成水平、实力水平

int[] saveStats = { constitutionLevel, strengthLevel };

int constitutionLevelLocation = 0;
int strengthLevelLocation = 1;

public StatSaver()
{
    constitutionLevel = Constitution.getConstitutionLevel();
    strengthLevel = Strength.getStrengthLevel();
}

public void startSaving()
{
    readPlayer("SaveManagement/Stats/save.txt");
    updatePlayerStats();
    savePlayer("SaveManagement/Stats/save.txt");
}

private void updatePlayerStats()
{
    System.out.println("Saving Stats...");
    System.out.println(constitutionLevel);
    constitutionLevel = saveStats[constitutionLevelLocation];
    strengthLevel = saveStats[strengthLevelLocation];
    System.out.println(constitutionLevel);
    System.out.println("Done Saving Stats");
}

private void readPlayer(String filePath)
{
    File inputFile;
    BufferedReader inputReader;

    try
    {
        inputFile = new File(filePath);
        inputReader = new BufferedReader(new FileReader(inputFile));

        for (int i = 0; i < saveStats.length; i++)
        {
            saveStats[i] = Integer.parseInt(inputReader.readLine());
        }

        inputReader.close();
    } catch (Exception e) { e.printStackTrace(); }

}

private void savePlayer(String filePath)
{
    File outputFile;
    BufferedWriter outputWriter;

    try
    {
        outputFile = new File(filePath);
        outputWriter = new BufferedWriter(new FileWriter(outputFile));
        outputWriter.write(saveStats[0] + "\n");
        outputWriter.write(saveStats[1] + "\n");
        //for (int i = 0; i < saveStats.length; i++)
        //{
        //  outputWriter.write(saveStats[i] + "\n");
        //}

        outputWriter.close();
    } catch (Exception e) { e.printStackTrace(); }

}

正如你所看到的,我有一行代码被注释掉了,但是上面的两行代码做了相同的事情,我只需要输入更多的东西,我可以修改它,做一些更大的事情,但是因为我现在有两个统计数据,我不着急。唯一的短期解决方案是更改.txt文件中的值,但当我公开游戏时,这不会起作用,因为每个人都会将统计值设置为无穷大。无论如何,请帮助和感谢提前

因此,在StartSave方法中,您从readPlayer中读取信息,我假定这些信息是存储在文件中的旧值,然后将这些值放入数组中。在updatePlayerStats中,获取数组中的值,并将它们放入两个变量中,覆盖构造函数放入其中的内容。最后,savePlayer方法从数组中获取信息,并将其保存到文件中。您在任何时候都没有更改数组中的值,因此没有向文件中添加新的数字。

startSaving不会从此代码中调用。你确定有人叫它吗?当我停下来清理游戏时,我会叫它。