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

  • 10
  • Недоступна
В метод main первым параметром приходит имя файла1, вторым — файла2. Файл1 содержит слова, разделенные пробелом. Записать через запятую в Файл2 слова, длина которых строго больше 6. В конце файла2 запятой не должно быть. Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (157)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
MrKermit20 уровень, Москва
28 апреля, 11:45
Зная, что не все так просто в плане условия, заходим в комменты, узнаем что строк несколько и в условии как всегла нае**ли (Файл1 содержит слова, разделенные пробелом.), а мы знаем что перевод на новую строку это не пробел... Возвращаемся, решаем с 1 попытки) Чему учит такая постановка задачи?
Oleg Fedoruk33 уровень
24 марта, 20:39
это просто отнимает время) прошёл через стрингбилдер не прошёл через коллекцию и 2 цикла результат записи одинаковый и по тексту и по байтам ¯\(°_o)/¯
Alexey Tarakanov29 уровень, Москва
22 марта, 00:45
xD это бомба. Сначало не понял, что возможно много строк и в конце строк не нужна запятая, но сделал как умею. В итоге валя прямо сказала что хочет)) Update: Чтобы не вводить в заблуждение. В итоге решил, в задании все написано четко - все значения через запятую, в конце запятой не должно быть. Если строк на ввод несколько - на вывод в любом случае слова через запятую без запятой на конце. Попробуйте несколько тестов, особенно помогли для моей проблемы когда в совпадении только 1 слово/нет совпадений вообще (запятая может появится когда не нужна) и когда идет совпадение из нескольких строк (запятая может на разрыве пропасть, слова могут слипнуться без разделения или может появиться 2 запятых)
Александр23 уровень, Казань
21 марта, 13:59
Начал делать все через регулярки - со строками до этого уже напыхтелись.
Николай22 уровень
19 марта, 14:08
Опять невнимательность - не прочитал, что параметры не надо с консоли считывать ))
Petrusiova28 уровень
17 марта, 17:11
как НЕ проходит:
BufferedWriter writer = new BufferedWriter(new FileWriter(fileOut, true));
(говорит убедиться, что использую FileWriter) как проходит:
BufferedWriter writer = new BufferedWriter(new FileWriter(fileOut));
Вячеслав20 уровень, Санкт-Петербург
15 марта, 14:28
Как, ссука, из фразы "Файл1 содержит слова, разделенные пробелом." понять, что Файл1 на самом деле содержит ни "слова, разделенные пробелом", а, строки, состоящие из слов, разделённых пробелами??? Составленные на от.....бись условия к задачам уже в корне раздражают.
Николай22 уровень
19 марта, 14:11
Вячеслав, раздражительность плохая черта для разработчика. Но к слову сказать, в задании не сказано, что строка одна. Поэтому в принципе все корректно. Да и хорошая практика - всегда считывать ВЕСЬ файл ))
Вячеслав20 уровень, Санкт-Петербург
19 марта, 15:39
В условии к одному из предыдущих заданий (точно не помню к какому) было сказано что-то типа "файл содержит строки со словами, разделёнными пробелами". Здесь вопросов нет - условие корректно. Почему же в этом задании, раз это проверяется, структура файла не была описана аналогично? Да, здесь не сказано, что строка одна, но сказано "содержит слова, разделенные пробелом", что, на мой взгляд, исключает наличие нескольких строк в файле. Слова через пробел, всё. Никаких переносов строк. И, раз уж мы здесь учимся, это ресурс учебный, то условия к задачам, я считаю, должны быть чёткими, эталонными (ну или близки к таковым), чтобы сразу привыкать к хорошему, к тому как должно быть правильно, а не к "а-ай... и так сойдёт". Хотелось бы тратить больше времени на обучение, а не на уламывание валидатора перебором вариантов. И, во-первых, кто сказал, что ВЕСЬ файл не является или не может являться одной строкой? Во-вторых, если считать ВЕСЬ файл и распарсить его по условию, то правильного выполнения не будет - про строки в условии ничего не сказано.
Николай22 уровень
19 марта, 15:42
я думаю и помимо этой задачи вы встречали такие, где не сразу поймешь что от тебя хотят. И в реальности это нормально. Поэтому нужно просто успокоиться и решать, решать, решать ))
Вячеслав20 уровень, Санкт-Петербург
19 марта, 16:10
Когда несколько часов к ряду мучаешься с одной задачей из-за нечёткого условия, хочется ломать, ломать, ломать... Ещё раз повторю - в жизни нет валидатора. Написал? Написал. Работает? Работает. Всё, эту тестировщикам на проверку, следующую задачу в студию! Уговаривать никого не надо, тем более когда написано одно, а имеется ввиду другое.
Николай22 уровень
19 марта, 18:35
Как хотите, не мне вас переубеждать.
Вячеслав20 уровень, Санкт-Петербург
19 марта, 21:40
Отчего же? Я за диалог. Только конструктивный, с приведением аргументов и парирование доводов оппонента. А не просто словами, что всё корректно, потому что в реальности это нормально. Во-первых, в реальности всё же другой подход, а, во-вторых, в разных фирмах разные представления о "нормальности". И обсуждение началось не с реальности, а с учебного ресурса. Аргументы в пользу того, каким он должен быть по моему представлению, я уже приводил.
Николай22 уровень
20 марта, 04:19
Аргументы? Ок. В задаче написано, что в файле только одна строка? Нет. Это вы так интерпретировали ... сделали ложные выводы.
Вячеслав20 уровень, Санкт-Петербург
20 марта, 06:29
Блин... Комментирую себя: "В условии к одному из предыдущих заданий (точно не помню к какому) было сказано что-то типа "файл содержит строки со словами, разделёнными пробелами". Здесь вопросов нет - условие корректно. Почему же в этом задании, раз это проверяется, структура файла не была описана аналогично?" По логике - если ранее было, а тут нет, значит не написали не просто так. Далее по тексту: "Да, здесь не сказано, что строка одна, но сказано "содержит слова, разделенные пробелом", что, на мой взгляд, исключает наличие нескольких строк в файле. Слова через пробел, всё. Никаких переносов строк."
Николай22 уровень
20 марта, 06:51
Ну перечитайте себя же еще разок - вы сами додумали это условие. Да, в предыдущей задаче это было четко прописано, но в этой же нет такого же четкого указания, что в файле только одна строка? Ваша логика следующая - если там было четко написано, значит здесь ДОЛЖНО быть то же четко прописано. Оказывается - не должно. Просто не стоит так из за этого переживать - главное решение уже сделано, опыт получен, знания получаются.
Вячеслав20 уровень, Санкт-Петербург
20 марта, 08:26
Совершенно верно! Моя логика такова. "Оказывается - не должно" - в том и дело, что должно, а то, что не указали - допустили неточность в условии. Мою логику подкрепляет и второй аргумент. Указано чётко в файле то, что есть, значит другого нет. По крайней мере я могу это не учитывать, а валидатор при прогоне тестов, соответственно, не должен. По вашей логике, почему там не быть запятым, кавычкам, двоеточим, возвратам каретки и т.д.? Про них же тоже ничего не сказано. А выводить нужно только слова.
Александр23 уровень, Казань
21 марта, 13:37
Вы не знали что файлы состоят из строк?
Вячеслав20 уровень, Санкт-Петербург
22 марта, 09:38
А файл не может состоять из одной строки, да? Их всегда должно быть несколько? Прикольно...
Александр23 уровень, Казань
22 марта, 11:47
Почему же - может. Просто тупо думать, что там одна строка - так как в прошлой задаче писали про много строк - а тут не написали - значит одна.
Вячеслав20 уровень, Санкт-Петербург
22 марта, 16:32
Это нормально, делать то, что требуется. И объявлять сразу о том, что учитывается. Так можно думать много о чём! И всё учитывать, что не написано в условии и требованиях. Это же не значит, что этого нет.
Aleksei Dobrovolskii23 уровень
5 марта, 04:01
Три попытки профукал на том, что, оказывается, валидатор считает словом не "всё_что_состоит_из_букв", а "всё_что_не_пробел" *facepalm*
Александр23 уровень, Казань
21 марта, 13:39
Ага, спс, сократил регулярку до этого:
Pattern pattern = Pattern.compile("[\\S]{7,}");
Демин Андрей20 уровень
1 марта, 17:52
опять пришлось копипастить, жабараш прям тренирует этот скил, написал решение, волентина не принял, спиздил код, запустил и оБоже, вывод такой же, а валентин радуется,зачем ото надо :(
Николай22 уровень
19 марта, 14:15
зачем копипастить? ручками на автомате набивается за 3 минуты весь код - зато руки будут помнить. Но так же вы зря используете чужой код только для того, что бы пройти валидатор - это плохая практика, т.к. мы в начале своего пути, а разработчики курса достаточно опытные программисты и могут учитывать в решении то, на что вы и внимания бы не обратили. Для этого у валидатора есть юнит тесты при помощи которых проверяется наш код - в него просто подставляются тестовые данные различной сложности. И то, что у вас ваш код работает еще не означает, что он правильно будет работать на всех видах данных.
Демин Андрей20 уровень
21 марта, 10:50
так почему не указать именно те ситуации, ото смотришь как баран на новые ворота
Иван20 уровень, Москва
28 февраля, 12:26
Из-за того что не добавлял пустую строку, валидатор не принимал, вот до сих пор не могу понять зачем оно нужно
while(readFile.ready()){
            builder.append(readFile.readLine());
            builder.append(" ");
        }
UPD: пробел добавляется, чтобы слова со следующей строчки не сливалось в одно слово
Филипп23 уровень, Минск
11 марта, 12:38
там про следующую строчку ничего не сказано, написано что слова разделены ПРОБЕЛОМ, символ 'переход на новую строку' не равно символ 'пробел', в этом уровне задачки составлены и проработаны откровенно на отъ*бись. Т.е. по логике читает весь файл одна команда readLine и работаем с одной строкой. Специально проверял, в блокноте 100500 символов ввел без Entera и прочитал Ридером, все читается одной строкой, никаких "когда переходит на новую строку автоматом \r\n ставит".