在使用静态数组时遇到一些麻烦

时间:2013-05-02 01:04:29

标签: java arrays string methods static

我一直在尝试制作有趣/练习的游戏,我尝试使用一种方法来缩短程序。这是方法和相关变量:

public static int itemCount;
public static String[] itemName = new String[15];
public static String[] itemDesc = new String[15];
public static void additem (String name, String description){
    for(int i = 0; i < itemCount; i++){
        if(itemName[i].equals(name)){
            break;
        }else if(i == (itemCount - 1)){
            itemName[itemCount] = name;
            itemDesc[itemCount] = description;
            itemCount++;
            break;
        }
    }
}

我在上面代码片段的第6行收到NullPointerException错误,据我所知,这意味着它无法读取itemName,尽管能够读取itemCount就好了。有谁知道如何解决这个问题,或者一些替代方案(不是太高级;我还是初学者)我可以使用吗?

编辑:为了澄清:在主程序中,itemCount = 1,我初始化了itemName [0]。

2 个答案:

答案 0 :(得分:0)

你的数组项是 null ,只需像下面的代码一样反转等于它,它将解决你的问题:

 if(name.equals(itemName[i])){

答案 1 :(得分:0)

您需要在addItem方法中修复循环。迭代到目前为止添加的所有元素更简单,检查这个新的name是否已经在itemName数组中,并且如果是这样就退出方法(使用return;获取空白法)。

static int itemCount = 0;

static void addItem(String name, String desc) {
    // check to see if the name is already in the array
    for (int i=0; i < itemCount; i++) {
        if (name.equals(itemName[i])) return; //exits method        
    }
    // now just add the item
    itemName[itemCount] = name;
    itemDesc[itemCount] = desc;
    itemCount++;
}