Написал решение, которое удовлетворяет условие, кроме случая, если есть одинаковые пустые строки. Не могу понять почему при присвоении текущего элемента массива буферной строковой переменной валидатор пропускает решение, а если сравнивать напрямую через array[i].equals(array[j]) - нет. Scanner scan = new Scanner(System.in); strings = new String[6]; for (int i = 0; i < 6; i++) { strings[i] = scan.nextLine(); } for (int i = 0; i < strings.length; i++) { String currItem = strings[i]; for (int j = strings.length - 1; j > i; j--) { if(currItem == null) break; if (currItem.equals(strings[j])) { strings[j] = null; strings[i] = null; } } } Другими словами для чего нужно вводить переменную currItem в этом примере? Почему нельзя сделать вот так: Scanner scan = new Scanner(System.in); strings = new String[6]; for (int i = 0; i < 6; i++) { strings[i] = scan.nextLine(); } for (int i = 0; i < strings.length; i++) { for (int j = strings.length - 1; j > i; j--) { if(strings[i] == null) break; if (strings[i].equals(strings[j])) { strings[j] = null; strings[i] = null; } } }