我一直在尝试制作有趣/练习的游戏,我尝试使用一种方法来缩短程序。这是方法和相关变量:
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]。
答案 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++;
}