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

  • 12
  • Недоступна
В метод main первым параметром приходит имя файла1, вторым — файла2. Файл1 содержит слова, разделенные пробелом. Записать через запятую в Файл2 слова, длина которых строго больше 6. В конце файла2 запятой не должно быть. Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (330)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Evgenii
Уровень 20
17 мая, 10:51
поделюсь своим вариантом сепаратизма - изюминки данной задачи, по моему мнению
String separator = "";
// ...
if (word.length() > 6) {
                    writer.write(separator);
                    writer.write(word);
                    separator = ",";
}
Евгений
Уровень 34, Москва
12 апреля, 10:29
как вариант, записать все слова через запятую в одну строку, а потом в конце обрезать запятую: line.replaceAll(",$", "")
Батислав Баткин душа в колесе сансары
8 апреля, 09:09
Казалось, задача супер простая, но валидатору что-то постоянно не нравилось.. заколебал идею на тексте самой задачки: В метод main первым параметром приходит путь к файлу1, вторым - путь к файлу2. Файл1 содержит слова, разделенные пробелом или переводом строки (в файле может быть несколько строк). Все, что не относится к пробелу или переводу строки, разделителем не считать. Записать в одну строку через запятую в Файл2 слова, длина которых строго больше 6. В конце файла2 запятой не должно быть. Закрыть потоки. в итоге, задолбался, так как моё решение идеально подходило по требованиям, попробовал прогнать код из "правильного решения" на тексте, и вот что вышло: параметром,приходит,файлу1,,файлу2.,содержит,разделенные,пробелом,переводом,несколько,строк).,относится,пробелу,переводу,строки,,разделителем,считать.,Записать,запятую,которых,запятой,Закрыть,потоки. это ужасно.. "файлу1" "строк)" "строки,".... результат моего кода: параметром,приходит,содержит,разделенные,пробелом,переводом,несколько,относится,пробелу,переводу,разделителем,считать,Записать,запятую,которых,запятой,Закрыть Уважаемые менторы, это что за халтура? Мы же вам, все-таки, деньги платим. Поправьте, пожалуйста, хотя бы для следующих поколений джаварашовцев.
Zuzu
Уровень 25, Польша
9 апреля, 10:58
скинь код иди ссылку на форум где ты разместил вопрос
VladimirPic Работает в Gazprom
20 марта, 10:15
Инструкция выполнения задачи 1) Решить task в idea собственноручно 2) Затестить решение на всех возможных вариантах и убедиться в правильности кода (заглянуть в комменты, здесь тоже добрые люди накидывают идея для тестинга) 3) JavaRush => Помощь => Правильное решение => Запуск Next task✅
The Body of the Atr
Уровень 47
17 февраля, 17:03
иногда не понятна лексика типа "строго" больше шести, типа если не строго, то иногда можно и меньше, главное что б строго не ругали. Если обработать решенной задачей вот этот текст: "Все, что не относится к пробелу или переводу строки, разделителем не считать. Записать в одну строку через запятую в Файл2 слова, длина которых строго больше 6. В конце файла2 запятой не должно быть." то результат будет такой: "относится,пробелу,переводу,строки,,разделителем,считать.,Записать,запятую,которых,запятой" то есть в выходе кроме букв будут не только запятые и это нормально.
Bandat System analyst
20 февраля, 10:50
"Не строго" означает, что может быть и равно.
Денис Измайлов Инженер- программист в CloudFactory
2 марта, 08:56
Не знаю откуда Вы это взяли, но БОЛЬШЕ имеет значение БОЛЬШЕ, а не "большеилиравно" без всяких "строго" :) Ну, как то так это в Русском языке, не знаю про другие :)
Bandat System analyst
2 марта, 17:40
Из основ математики я это взял, из основ математики ...
Elidriel
Уровень 35, Воронеж
10 февраля, 13:37
Так... ну мое решение оказалось в два раза короче, и по-моему легче, так что выложу последовательность действий: 1) arraylistы нам не нужны, нам нужен StringBuilder, создаем его 2) в цикле while считываем построчно из файла 3) каждую строку переводим в массив 4) по массиву проходимся foreach-ем и через if при помощи такой замечательной конструкции -
str.matches("[\\S]{7,}")
, добавляем в StringBuilder удовлетворяющие нас слова (незабываем добавлять запятые) 5) ну а дальше можно поместить все в одну строку _
writer.write(приводим_к_String(stringBuilder).убираем_последнюю_запятую_методом_replaceAll)
(в регулярочках за последний символ отвечает знак $)
Денис Измайлов Инженер- программист в CloudFactory
2 марта, 09:31
зачем так длинно ? :) там нужны только 2 файловые переменные и 2 текстовые, причем 1 текстовая чисто вспомогательная чтобы не городить огород с вычислениями, когда надо/не надо ставить запятую - разделитель :) решение укладывается в один цикл (а не с кучей как в "эталоне") одной строкой while (file.ready()) { for (String s:file.readLine().split(" ")) if (s.length()>6) {fileout.write(d + s); d=",";} } Никаих регулярок, никаких билдеров в принципе не надо :)
Евгений
Уровень 28, Москва, Russian Federation
2 февраля, 18:31
Запись в файл через запятую. Без всяких пробелов.
SoSed
Уровень 38, Киев, Ukraine
25 января, 08:37
Регулярку "[\s\n]" валидатор не принимает. "[ \n]" - норм UPD1 Оказывается, достаточно просто " ". Интересно, почему? UPD2 Да потому, что читаем-то построчно. По переносу строки данные разделены изначально (если, конечно их не в строку собирать).
Sasha Dokuchaev Работает в Andersen
12 января, 21:07
Последние несколько задач думал, что валидатор отстой А затем, спустя час-два оказывалось, что всё-таки я не доработал, и вывод может быть неверным В общем, имхо не стоит сразу плеваться и Ctrl+C — Ctrl-V решение скармливать валидатору, а хотя бы минут 15 поискать ошибку у себя, или в комментариях, или в гугле
Антон Власов
Уровень 36, Russian Federation
16 января, 17:22
в таких случаях мне очень помогает тестовый прогон программки на компе. Если тесты не выдают ошибок на различных данных, то тогда уж лезу смотреть что там в решении от разработчиков. Но чаще всего, ошибка находится на моей стороне)
Юрий
Уровень 20, Киев
3 января, 19:20
Решил. а чего сразу не указать, что нужно использовать StringBuilder и System.lineSeparator()?