グローバル配列「単語」から削除するために、文字列単語を引数として取るこのメソッド 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
}
}
また、適切なコーディング方法について何か提案があれば、よろしくお願いします!
** このメソッドのデータ構造として配列のみを使用できます。