static в Java означает, что это переменная класса или метод, то есть метод или переменная являются общими для всех экземпляров класса. Это также означает, что вам не нужно создавать экземпляр класса для вызова метода. ПРИМЕЧАНИЕ. Если у вас нет веской причины делать вещи статичными, это, как правило, не очень хорошая идея, поскольку создает кучу глобальных переменных и функций.
Правильный способ решения этой проблемы - создать экземпляр вашего класса в main и затем вызвать метод для экземпляра.
ПРИМЕЧАНИЕ2: статические переменные сталкиваются с проблемами, если у вас несколько потоков, и это означает, что вам нужно синхронизировать чтение и запись в этих потоках.
Я бы посмотрел на это: http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/java/javaOO/classvars.html
РЕДАКТИРОВАТЬ: Вот код без статики, который, кажется, работает.
import java.util.ArrayList;
public class Item
{
public int attack, defense;
public ArrayList<String> arr = new ArrayList<String>();
public String name, desc, typeOf, attackAdd, defenseAdd, canSell,
canEat, earnedCoins, canEquip;
String stats[];
public static void main(String args[])
{
Item anItem = new Item();
anItem.addInv(1);
}
public void addInv(int e)
{
String iname = getItem(1)[0];
String idesc = getItem(1)[1];
// Never read
//int itypeOf = Integer.parseInt(getItem(1)[2]);
int iattackAdd = Integer.parseInt(getItem(1)[3]);
int idefenseAdd = Integer.parseInt(getItem(1)[4]);
// Never read
//boolean icanSell = Boolean.parseBoolean(getItem(1)[5]);
// Never Read
//boolean icanEat = Boolean.parseBoolean(getItem(1)[6]);
// Never Read
//int iearnedCoins = Integer.parseInt(getItem(1)[7]);
attack = attack + iattackAdd;
defense = defense + idefenseAdd;
System.out.println("You picked up: " + iname);
arr.add("dan");
System.out.println("Description: " + idesc);
}
// Types of Items
// 0 - Weapon
// 1 - Food
// 2 - Reg Item
// 3 - Helmet
// 4 - Armor Legs
// 5 - Chest Armor
// 6 - Shield
public String[] getItem(int e)
{
// Never read
// String[] stats = new String[7];
String name = "Null";
String desc = "None";
String typeOf = "0";
String attackAdd = "0";
String defenseAdd = "0";
String canSell = "true";
String canEat = "false";
String earnedCoins = "0";
if (e == 1) {
name = "Pickaxe";
desc = "Can be used to mine with.";
typeOf = "2";
attackAdd = "2";
earnedCoins = "5";
}
return new String[] { name, desc, typeOf, attackAdd, defenseAdd,
canSell, canEat, earnedCoins };
}
}