在启动时删除的变量

时间:2016-07-30 18:50:28

标签: java minecraft minecraft-forge

我的班级中定义的变量如下:

private static int zombieKills = 0;

问题是,每次启动应用程序时,它都设置为0.我希望它只在应用程序启动的第一次设置为0。因此,如果我将其设置为5,则在重新启动应用程序时它不会重置为0.

4 个答案:

答案 0 :(得分:4)

运行应用程序不会更改代码。如果您想存储这样的数据,最好将其存储为属性文件并在启动应用程序时加载它,并在更改时保存它。

关于属性的Oracle教程:link

关于如何做的一小段代码:

// saving it
Properties prop = new Properties();
prop.setProperty("zombieKills", String.valueOf(zombieKills));
prop.store(new FileOutputStream(new File("insert file here")), "");

// loading it
Properties prop = new Properties();
prop.load(new FileInputStream(new File("insert file here")));
zombieKills = Integer.parseInt(prop.getProperty("zombieKills"));

答案 1 :(得分:1)

你可以查看Minecraft Forge的Advanced Configuration File

它专为在Minecraft中使用而设计,在我看来非常简单易用。

答案 2 :(得分:0)

我想即使程序停止,你唯一可以做的就是保存变量是将它们存储在extern文件中(例如.txt)。

答案 3 :(得分:0)

您可以执行以下操作将变量写入.txt文件:

try {
    FileOutputStream fos = new FileOutputStream("NameOfFile.txt");
    ObjectOutputStream os = new ObjectOutputStream(fos);

    os.writeInt(zombieKills);

    os.close();
    fos.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

然后,当您重新启动游戏时,可以像这样加载变量:

try {
    FileInputStream fis = new FileInputStream("NameOfFile.txt");
    ObjectInputStream is = new ObjectInputStream(fis);

    zombieKills = is.readInt();

    is.close();
    fis.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}