2016-07-30 2 views
0

я моя переменная, определенная в моем классе следующим образом:Переменные удаление при запуске

private static int zombieKills = 0; 

Проблема заключается в том, каждый раз, когда я запустить приложение, оно устанавливает 0. Я хочу, чтобы установить в 0 только в ПЕРВОЕ время запуска приложения. Поэтому, если я установил его, скажем, 5, он не будет сброшен до 0, когда я перезапущу приложение.

+4

Сохраните его в файле/базе данных и т. Д. – SMA

+0

Это ожидаемое поведение. Что вы пытались выполнить? – BackSlash

+0

Подсказка: я бы посоветовал сделать шаг назад на секунду. Кажется, что вы действительно на абсолютном уровне новичка с java. Но вы решили заняться программированием на программировании? В самом деле? Честно говоря: потратил некоторое время на изучение основ; в противном случае шансы высоки, что бы вы ни придумали ... будет ошибкой, а не для кого-либо. – GhostCat

ответ

0

Я полагаю, что единственное, что вы можете сделать для сохранения переменных, даже когда программа остановлена, - это хранить их в внешнем файле (например, .txt).

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")); 
+0

Спасибо. Я немного смущен этой ссылкой. Как я должен это делать? – Betterjakers

+0

@Betterjakers используют «Написание сортированных свойств» для сохранения и «загрузки свойств» для их загрузки. Если вы все еще запутались, попробуйте googling «Свойства Java», и вы сможете найти другие учебники и исходный код. Также, если вы нашли этот ответ наиболее полезным, пожалуйста, отметьте его как правильно. – Arthur

+0

Есть ли еще это сделать? Это кажется очень сложным. Я просто не хочу, чтобы мои переменные перезагружались при перезагрузке приложения. Есть ли способ сделать это без чтения/записи из файлов? – Betterjakers

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(); 
} 
+0

Я поместил второй бит кода в метод preInit в основном классе (я сделал zombieKills «public static int») и первый бит кода, который запускался каждый раз, когда игрок убивает зомби. К сожалению, он не работает и продолжает перезагружаться до 0 при перезапуске. – Betterjakers

+0

Попробуйте поместить некоторые 'System.out.println()' в оба куска кодов, чтобы удостовериться, что они вызваны. Кроме того, проверьте, был ли файл создан. Если файлы не были созданы, проблема, скорее всего, возникнет в результате. Если файл создан, и вы видите что-то в нем, проблема, скорее всего, будет на входе. – Olithegoalie

1

Вы можете проверить Minecraft Forge's Advanced Configuration File.

Он предназначен для использования в Minecraft, и, на мой взгляд, очень прост в использовании.

Смежные вопросы