Длинные слова

  • 10
  • Недоступна
В метод main первым параметром приходит имя файла1, вторым — файла2. Файл1 содержит слова, разделенные пробелом. Записать через запятую в Файл2 слова, длина которых строго больше 6. В конце файла2 запятой не должно быть. Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (108)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
RMuskovets32 уровень, Львов
вчера, 10:53
С 1 раза! Среднее количество - 3.13 :) Когда чувствуеш себя гуру в чём-то:
fout.write(words.stream().filter(e->e.length()>6).collect(Collectors.joining(",")));
Khabibullaev20 уровень
6 января, 15:23
Подытоживая ранние комментарии и добавляя своё: Для тех, кто мучается с валидатором прилагаю тестовый файл на три строки: aaa bbbbb 12 main(String[] all jam 3 lilil amora6 4444 ametits 5 abracadabra fff all other 6 anna-mariya 33sdsd44 Результат должен быть такой: main(String[],ametits,abracadabra,anna-mariya,33sdsd44 Также для проверок ваших регексов рекомендую сайт: https://regex101.com
Роман20 уровень
24 декабря 2018, 08:00
Если читаете файл построчно как и я, и подразумеваете, что файл состоит из несколько строк. То первую строку, один раз начните без запятых,
stTemp = stTempArr[i];
а все последующие, нужно будет сделать с добавление запятой перед новым словом что > 6
stTemp = stTemp+","+stTempArr[i];
17 декабря 2018, 16:21
Если кому надо убрать последний символ:
result = result.substring(0,result.length()-1);
Дмитрий К.24 уровень, Иркутск
11 декабря 2018, 09:15
решение с помощью Stream API
\\ @param buff - буфер ArrayList
buff.addAll(Arrays.asList(s.split(" ")).stream().filter((a) -> a.length() > 6).collect(Collectors.toList()));
Еще один интересный момент, не стал мудрить с стрингбилдером а воспользовался toString класса ArrayList немного отрезав лишнее
bufferedWriter.write(buff.toString().substring(1, buff.toString().length() - 1).replaceAll(" ", ""));
ezhilo8522 уровень
17 декабря 2018, 21:43
o.O То есть вот это нагромождение преобразований строки - "не стал мудрить" ?
Дмитрий К.24 уровень, Иркутск
18 декабря 2018, 01:39
нагромождение ? интересно что вы скажете про StreamApi когда начнете его изучать )) пример с хабра - сортировка коллекции людей сначала по полу, потом по возрасту
peoples.stream().sorted((o1, o2) -> o1.getSex() != o2.getSex()? o1.getSex().compareTo(o2.getSex()): o1.getAge().compareTo(o2.getAge())).collect(Collectors.toList())
С форматированием строки можно добиться легко читаемого кода
bufferedWriter.write(buff.toString()
                         .substring(1, buff.toString().length() - 1)
                         .replaceAll(" ", ""));
ezhilo8522 уровень
18 декабря 2018, 07:33
C форматированием получче выглядит да. Я всегда за "читаемость", не понимаю зачем стараются слепить в одну строку вместо того чтобы разбить на 2 легко читаемые и воспринимаемые строки.
Дмитрий К.24 уровень, Иркутск
20 декабря 2018, 09:43
копипаст вставил в одну строку, обычно пишешь для себя в нормальном стиле форматирования чтоб понимать потом себя =)
RMuskovets32 уровень, Львов
вчера, 10:49
А можно так:
file2.write(buff.stream().filter(e->e.length()>6).collect(Collectors.joining(",")));
Pasha Germanovich22 уровень, Минск
3 декабря 2018, 21:09
лол, промучился бы еще несколько часов, если бы пытался допетрить самостоятельно, что валидатор не принимает решение, если ты сплитишь строки с помощью релугярки split(" "), нужно split(" +"), т.е. авторы подразумевают, что слова мб разделены не только одним пробелом, но и пробелами и валидатор не хавает решение
Игорь23 уровень
7 декабря 2018, 23:25
я решил с регуляркой split(" ") О_о
Иван Сапронов20 уровень
14 декабря 2018, 12:39
У меня с первого раза прошло решение со split(" ") .
Василий23 уровень, Киев
15 ноября 2018, 22:08
пока не вынес запись в файл за пределы цикла чтения, валидатор не пропускал.
Gagarin28 уровень, Санкт-Петербург
7 ноября 2018, 14:05
Соединил через пробел, затем заменил вместе с .trim() пробелы на ",".
Victoria Sedletskaya32 уровень, Одесса
6 ноября 2018, 11:03
Сначала решила поиском подохдящих слов
"\\b[\\wа-яА-Я]{7,}\\b"
не принял потом решила исключением неподходящих
replaceAll("\\b[\\wа-яА-Я]{1,6}\\b", "");
не принял сплитом и перебором с проверкой length принял
Gogogo30 уровень
3 ноября 2018, 09:05
Статитика последних задач: 20% времени на создание рабочего кода и его тестирование , 80% времени на борьбу с валидатором. Авторы курса, конкретизируйте претензии валидатора! Невозможно ведь понять, что не так в моём коде. Надоело биться, как муха о стекло.