我的班级中定义的变量如下:
private static int zombieKills = 0;
问题是,每次启动应用程序时,它都设置为0.我希望它只在应用程序启动的第一次设置为0。因此,如果我将其设置为5,则在重新启动应用程序时它不会重置为0.
答案 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();
}