我正在制作这个方法 remove() ,它以字符串单词作为参数,从全局数组“单词”中删除,但由于某种我找不到的原因,我一直收到 NullPointerException,被卡了几个小时。
基本上我检查单词是否在第一个位置,否则如果在最后一个位置,或者如果它不在所以我检查所有数组,并在单词位置之前添加前半部分,然后添加数组中单词位置之后的后半部分,如跳过它并“删除它”。但是我在 for 循环中得到一个 NullPointerException 来寻找单词在数组中的位置。该方法的代码在这里:
public void remove(String a){
String[] temp_arr = new String[words.length-1]; // make array with 1 less length for deleted
if(words[0].equals(a)){ // if the word is the first in the array
for(int x=0, z=1; x<temp_arr.length; x++,z++)
temp_arr[x]=words[z];
words = temp_arr;
} else if(words[words.length-1].equals(a)){ // if the word is in the last position of the array
for(int x=0, z=0; x<temp_arr.length; x++,z++)
temp_arr[x] = words[z];
words = temp_arr;
} else{ // if the word is in neither first or last position of array
// THIS IS WHERE the exception is thrown, in this for loop, in the if(words[k].equals(a))
int k=0;
for (; k<words.length; k++){ // find the position of the word to delete
if (words[k].equals(a)) {
break;
}
}
for (int i = 0; i < k-1; i++){ // add first part of array before the word
temp_arr[i] = words[i];
}
for(int c = k, b = k+1; c< temp_arr.length; c++,b++){
temp_arr[c] = words[b];
}
words = temp_arr; // assign the new values to global array
}
}
另外,如果有任何关于良好编码实践的建议将不胜感激,谢谢!
** 对于这种方法,我只能使用数组作为我的数据结构。