#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:
- Удалите
break;
строку, потому что она прерывает ваш цикл после первой замены. -
Изменение
if (iTMembers[i].equals(memberName))
Для
if (memberName.equals(iTMembers[i]))
потому что, если
iTMembers[i]
естьnull
, вам нуженfalse
результат, а неNullPointerException
.