Удаляем одинаковые строки

  • 6
  • Недоступна
В этой задаче тебе нужно: 1. Считать 6строк и заполнить ими массив strings. 2. Удалить повторяющиеся строки из массива strings, заменив их на null (null должны быть не строками "null"). Примеры. 1. Массив после чтения строк: {"Hello", "Hello", "World", "Java", "Tasks", "World"} 2. Массив после уд
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (440)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
verty dan
Уровень 2
18 марта, 15:35
Я не знаю как себя ощущать, вроде бы и понял абсолютно все элементы задачи, и по кусочкам собрал ее в голове по решениям людей в комментариях, а вроде бы и обидно что сам не додумался и до половины что нужно для решения, это прогресс или нет вообще?
Иван Шубин
Уровень 4
12 марта, 14:40
Всем привет! подскажите. плз, что не так: public class Solution { public static String[] strings; public static void main(String[] args) { //напишите тут ваш код Scanner console = new Scanner(System.in); strings = new String[6]; for (int i = 0; i < strings.length; i++) { strings[i] = console.nextLine(); } for (int i = 0; i < strings.length; i++) { String words = strings[i]; for (int j = i + 1; j < strings.length; j++) { if (strings[j] == null) { break; } if (strings[j].equals(words)) { strings[i] = null; strings[j] = null; } } } for (int i = 0; i < strings.length; i++) { System.out.print(strings[i] + ", "); } } } Результат выводит правильный, но проверку не проходит
Ze Batua
Уровень 9
20 марта, 16:00
Попробуй ввести в консоль: cat dog home cat home tank
Рома рома
Уровень 8
24 марта, 17:22
Как я понял метод equals() вообще никак не должен взаимодействовать с null. Я решил это тем, что создал еще одни массив в который записал номер тех позиций в массиве которые мне нужно заменить на null. А потом отдельным циклом их заменил.
Anonymous #3268037
Уровень 9
6 марта, 18:45
Попытался объяснить решение для тех, кто тоже столкнулся со сложностями при решении. Внимание: для того, чтобы объяснить, зачем нужна отдельная переменная под strings[i], я буду заполнять массив такими строками: hello, hello, world, hello, java, world
MaX
Уровень 13
6 марта, 13:04
Перед выполнением задачи, надо знать что нельзя сравнивать элементы массива методом .equals() если значение одного из них null, иначе программа будет вылетать
Anonymous #3232154
Уровень 25
15 марта, 20:23
а где об этом почитать можно, в лекциях об этом говорилось?
Evgeny Levin
Уровень 13
5 марта, 22:49
Scanner scanner = new Scanner(System.in); strings = new String[6]; boolean b ; for(int i = 0; i < strings.length; i++) strings[i] = scanner.nextLine(); String [] clone = strings.clone(); for(int i = 0; i < strings.length;i++) { b = false; for (int j = i + 1; j < strings.length; j++) if (strings[i].equals(clone[j])) { b = true; clone[j] = null; } clone[i] = b ? null : clone[i]; } strings = clone; for (String string : strings) { System.out.print(string + ", "); } scanner.close();
Сергій
Уровень 9
4 марта, 13:18
Я ведь правильно понимаю, если в решение, которое указано, как правильное, добавить седьмую строку "Hello", то код не поймет, что это повторение?
Di
Уровень 18
7 марта, 12:21
поймет, потому что заносит текущую сравниваемую переменную в currentString. в ходе цикла меняя значение в изначальной переменной на null, временная переменная все еще хранит изначальное значение и сравнивает с ним все переменные в массиве
Sergey Sergeevich
Уровень 9
Expert
2 марта, 21:27
Задача нуждается в корректировке и правильной поставкой вопроса, есть много нюансов. Поэтому она и вызывает столь затруднительное и времязатратное решение. Кто согласен , поставьте лайк для ....
Di
Уровень 18
7 марта, 12:22
в прочем все как и в жизни :)
Николай Еременко
Уровень 3
Expert
25 февраля, 15:01
int j = i + 1 Подскажите, что тут происходит?
ct0_let Работает в ОТР2000
26 февраля, 07:31
тут происходит следующее, если взять мой пример, то первая итерация из цикла for берет 0 индекс из массива, а вторым циклом фор, ты береш уже + 1 - ну эт как я понял. Т.е. если взять массив по длине = 5, то сравние будет таким 1 -> 2 1 -> 3 1 -> 4 1 -> 5 2 -> 3 2 -> 4 2 -> 5 3 -> 4 3 -> 5 4 -> 5
Di
Уровень 18
7 марта, 12:24
берет следующее значение в массиве, потому что сравнивать с предыдущими уже нет смысла, в прошлой итерации все предыдущее уже сравнилось.
Алёна Шмакова
Уровень 2
21 февраля, 22:32
Это бред что код принимается только после вынесения в отдельную переменную strings[i]
15 февраля, 23:53
можете подсказать, я написал код все верно, всё хорошо, но я не могу его протестить. В IDE я запускаю он компилируется, но ничего ввести не могу. Думал у меня IDEA забаговался и решил проверить на онлайн ресурсах и онлайн компиляторах, но и тут проблема. Все компиляторы все как один не могут скомпилировать программу и выдаёт ошибку. У кого так же или как это решить ? Задачу валидатор принял