Удалить все повторяющиеся строки из массива

Задание: считать с клавиатуры 6 строк и заполнить ими массив strings. Если есть одинаковые строки, то удалить их. Пример: Массив после чтения строк: {"Hello", "Hello", "World", "Java", "Tasks", "World"} Массив после удаления повторяющихся строк: {null, null, null, "Java", "Tasks", null}

Вопрос заключается в том, что тестирующая система не принимает решения, а я не могу понять почему. Думал, проблема может быть в выводе, поэтому заменил вывод следующим куском кода, который был в системе, но не помогло:

// Вывод
 for (int i = 0; i < strings.length; i++) {
            System.out.print(strings[i] + ", ");
        }

Вот мой основной код:

package helloworld;

import java.util.Scanner;

public class HelloWorld {

    public static String[] strings; // Объявляем массив


    public static void main(String[] args) {
        Scanner console = new Scanner(System.in); // Объект класса Scanner

        int arrLen = 6;
        strings = new String[arrLen];

        // Заполнение массива
        for (int i = 0; i < arrLen; i++) {
            strings[i] = console.nextLine();
        }

        // Обработка массивов
        for (int i = 0; i < arrLen; i++) {
            for (int j = 0; j < arrLen; j++) {
                 /*
                 Сравниваем элемент массива с другими элементами, когда индексы элементов неравны
                  (то есть не сравниваем элемент с самим собой)
                  */
                if (i != j && strings[i] != null) {
                    if (strings[i].equals(strings[j])) {
                        strings[i] = null;
                        strings[j] = null;

                    }
                }

            }
        }

        // Вывод
        for (int i = 0; i < arrLen; i++) {
            System.out.println(strings[i]);
        }
    }
}

Ответы (4 шт):

Автор решения: Olga Petrova

Тебе нужно все-таки сделать между for циклами временную переменную String current = strings[i]; и сравнивать с ней, то есть не

strings[i].equals(strings[j])

а

current.equals(strings[j])

Для того, чтоб не потерять третью одинаковую переменную, если она есть. Ведь если ты сажаешь на null оба элемента

strings[i] = null;  
strings[j] = null; 

то тебе тупо будет не с чем дальше сравнивать и не получится найти третий эелемент. А так ты продолжаешь сравнивать с current

→ Ссылка
Автор решения: ezulex

Во временную переменную надо класть значение, например так

String current = String.valueOf(strings[i]);

Иначе, если удалить strings[i], то current тоже будет null.

→ Ссылка
Автор решения: Greemka4

Это задание с Javarush. Если кому интересно вот решение, на которое потратил не мало сил и так.
/* Удаляем одинаковые строки */

public class ArrayString {

    public static String[] strings;

    // Удаляем одинаковые строки
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        strings = new String[6];  // назначаем массив из 6 блоков
        for (int i = 0; i < strings.length; i++) {
            strings[i] = scanner.nextLine(); // запись в массив 
        }
        for (int i = 0; i < strings.length; i++) {
            String str = strings[i]; // дополнительная переменная
            for (int j = i + 1; j < strings.length; j++) {
                if (str == null)  
                    break;
                if (str.equals(strings[j])) {  // сравнение текста 
                    strings[i] = null;         // в массиве
                    strings[j] = null;
                }
            }
        }
        for (String string : strings) System.out.print(string + ", ");
    }
}
→ Ссылка
Автор решения: Валерий Сугоняев

Застревал на этой задачке конкретно, все таки циклы внутри циклов трудновато осознать. В итоге решил через создание второго такого же массива, и без создания временной переменной для хранения значений. Конечно, пришлось гуглить как создать дубль массива. Варианта было 2, либо через цикл, либо с помощью готового инструмента. Выбрал готовый.

import java.util.Scanner;

public class Solution {
    public static String[] strings;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        strings = new String[6];
        String[] array = new String[strings.length];
        for (int i = 0; i < strings.length; i++) {
            strings[i] = sc.nextLine();                        // заполняем оригинальный массив
        }
        System.arraycopy(strings, 0, array, 0, strings.length);// делаем дубль оригинального массива
        for (int i = 0; i < strings.length; i++) {
            for (int j = 0; j < strings.length; j++) {
                if (j != i) {                                  // если индексы элементов двух массивов разные,
                    if (array[j].equals(strings[i])) {         // то сравниваем их значения. Если значения одинаковы,то
                        strings[i] = null;                     // устанавливаем значение оригинального массива = null.
                        break;                                 // прерываем вложенный цикл.
                    }
                }
            }
        }
        for (int i = 0; i < strings.length; i++) {
            System.out.print(strings[i] + ", ");
        }
    }
}
→ Ссылка