Всем привет! Так и не смог решить задачу, пошел в ответы, но к сожалению, яснее не стало. Оказалось, что я где-то недопонимаю принцип работы. Вот готовый код: public static void main(String[] args) { Scanner console = new Scanner(System.in); strings = new String [] {"Hello","Hi","Go","SW","Go","Lfw","Cabbage","Carrot","Hi"}; for (int i = 0; i < strings.length; i++) { String currentString = strings[i]; for (int j = i + 1; j < strings.length; j++) { if (currentString == null) { break; } if (currentString.equals(strings[j])) { strings[j] = null; strings[i] = null; В нем мне непонятен принцип работы этой части: Допустим, у нас есть массив: {"Hello", "Hi", "Go", "SW", "Go", "Lfw", "Cabbage", "Carrot", "Hi"}. Первая итерация внешнего цикла: i = 0 currentString = "Hello" Внутренний цикл: j от 1 до 8 j = 1: сравниваем "Hello" и "Hi" - не равны. j = 2: сравниваем "Hello" и "Go" - не равны. ... j = 8: сравниваем "Hello" и "Hi" - не равны. В итоге, "Hello" не имеет дубликатов, ничего не меняется. P.S. Здесь пояснения дал чат GPT Но насколько я понимаю из этой части: for (int i = 0; i < strings.length; i++) { String currentString = strings[i]; for (int j = i + 1; j < strings.length; j++) { if (currentString == null) { break; } if (currentString.equals(strings[j])) { strings[j] = null; strings[i] = null; String currentString должен с каждым витком цикла также менять свое значения из массива, как он сохраняет одно значение, а после гонит весь следующий цикл для сравнения? Я думал, сравнение идет по типу: currentString = "Hello" сравнивает "Hi", после виток перескакивает и currentString становится Hi, j становится Go, и далее. Сейчас вижу, что это не так, может кто-нибудь объяснить простыми словами, почему так? Заранее благодарю!