Удаление всех вхождений элемента в массиве (установка для него значения null)

#java #arrays

#java #массивы

Вопрос:

Я пытаюсь установить все вхождения элемента в массив, если он найден с помощью линейного поиска. Допустим, массив имеет следующий вид:

 [Steve, Steve, John, Mike, Gary, Bob, Susan, Mike, Sarah]
  

Допустим, я хочу присвоить всем вхождениям Mike значение null. Я пробовал следующее:

 for (int i = 0; i < iTMembers.length; i  ) {
    if (iTMembers[i].equals(memberName)) {
        iTMembers[i] = null;
        break;                              
    }               
}
  

Проблема, однако, в том, что он присваивает значение null только одному Mike (элементу строкового литерала), а другой все еще присутствует. Что я могу сделать? Спасибо!

Комментарии:

1. если вы удалите break, вы получите исключение нулевого указателя.

2. Удаление break приводит к исключению NullPointer. Я не думаю, что обработка исключений будет работать здесь правильно?

3. Получение NPE (исключение NullPointerException) предполагает, что в конечном итоге вы получаете null[index] или null.member . Возможно, у вас есть null где-то внутри вашего массива подобное {Steve, Steve, John, null, ..., } . Попробуйте напечатать каждое из них iTMembers[i] перед вводом if .

4. Я попробую это, спасибо

Ответ №1:

  1. Удалите break; строку, потому что она прерывает ваш цикл после первой замены.
  2. Изменение

     if (iTMembers[i].equals(memberName))
      

    Для

     if (memberName.equals(iTMembers[i]))
      

    потому что, если iTMembers[i] есть null , вам нужен false результат, а не NullPointerException .