Объясните, пожалуйста, как эта задача работает. 1) Я ввел первый цикл, который считает значения index. Добавил переменную currentString, равную значению array[index]. 2) Я ввел второй цикл, который прерывается при currentString, равном значению null. Если значение currentString совпадает со значением array[next], то array[index] и array[next] равны null. 3) Допустим. Размер массива равен 4. Значение array[index] равно 0. Тогда значение currentString равно array[index]. Включается внутренний цикл. 4) Если currentString равен array[next], то есть array[index + 1], то значение array[index] и array[next] равны нулю. Внутренний цикл прерывается, потому currentString равен null. 5) Поскольку array[next] является производной от массива array[index], причина: мы в условиях указали, что next = index + 1, то после окончания первого витка внутреннего цикла у нас обновляются условия во внешнем: array[0] и array[1] равны null. 6) Поскольку array[1] после первого витка внутреннего цикла равен null, то виток внутреннего цикла выполняться не будет. 7) Поскольку array[2] нам еще не известен, то начинает выполняться внутренний цикл. Если array[2] равен array[1], то их значение будет равно null. Если нет, то значение array[2] не изменится и продолжатся витки внутреннего цикла. Но данное суждение не является верным, потому что изначально в условиях мы определили, что int next = index + 1, следовательно, сопоставление при втором витке внутреннего цикла (первый виток дал нам array[0], равный null и автоматический пропуск внутреннего цикла при array[1], равном null), будет следующим: Мы начнем сравнивать в строгой последовательности array[2] и array[2 +1], то есть array[3]. Тогда А) если они идентичны, то будет выполняться следующее условие: array[2] и array[3] равны null. Поскольку оба равны null, то внешний цикл завершается. Мы публикуем результат с обновленным array[index]. Б) если они неодинаковые, то будет выполняться прокрутка внутреннего цикла дальше, тогда мы перейдем к четвертому витку внешнего цикла array[3]. Но поскольку размер массива: 0,1,2,3. Тогда array[3] будет не засчитанной. В итоге, внешний цикл также закрывается, только результат будет array[2] и array[3] не равны null. Я правильно понимаю, что будет все так работать? Главный принцип здесь - это создание двух взаимосвязанных циклов, где оба индикатора следующие: int index = 0 (начало отсчета массива с самого первого элемента) и int next = index + 1 (продолжение отсчета того же массива со второго элемента). Потому что связка: int index = 0 и int next = index + 1 дают некорректное решение проблемы. Надеюсь, мой текст не был таким скучным и ясность будет внесена. Спасибо!) for (int index = 0; index < array.length; index++) { String currentString = array[index]; for (int next = index + 1; next < array.length; next++) { if (currentString == null){ continue; } if (currentString.equals(array[next])){ array[index] = null; array[next] = null; } } System.out.println(array[index]); } } }