Начиная с 34 строки, у меня там цикл в цикле, который сравнивает элементы массива. Первый сравниваемый элемент берется сначала массива, а второй - с конца, и счет движется навстречу, грубо говоря.
т.е. первый элемент с индексом 0 я сравниваю со вторым элементом с индексом 5, на второй итерации strings [0] сравнивается с strings [4], затем strings [0] и strings [3] и т.д., одинаковым элементам присваивается пустая строка " ", при этом в if у меня исключение, чтобы индекс j не равнялся индексу i.
А уже на 41 строке новый цикл, который пробегает по элементам массива и сравнивает их с пустой строкой, если есть пустая строка, то этому элементу присваивается значение null.
Я попробовала много раз протестить, корректно работает, что не нравится валидатору?
package com.javarush.task.pro.task05.task0508;
import java.util.Scanner;
/*
В этой задаче тебе нужно:
Считать 6 строк и заполнить ими массив strings.
Удалить повторяющиеся строки из массива strings, заменив их на null (null должны быть не строками "null").
Примеры.
Массив после чтения строк:
{"Hello", "Hello", "World", "Java", "Tasks", "World"}
Массив после удаления повторяющихся строк:
{null, null, null, "Java", "Tasks", null}
Requirements:
1. В методе main(String[]) считай с клавиатуры 6 строк и заполнить ими массив strings.
2. В методе main(String[]) удали(заменить строку на null) элементы из массива strings с одинаковыми строками.
*/
public class Solution {
public static String[] strings;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
strings = new String[6];
for (int i = 0; i < strings.length; i++) {
strings[i] = scan.nextLine();
}
for (int i = 0; i < strings.length; i++) {
for (int j = strings.length - 1; j > 0; j--) {
if(strings[j].equals(strings[i]) && j != i) {
strings[j] = strings[i] = "";
}
}
}
for (int i = 0; i < strings.length; i++) {
if(strings[i].equals("")){
strings[i]=null;
}
}
for (int i = 0; i < strings.length; i++) {
System.out.print(strings[i] + ", ");
}
}
}