ребят по-опытнее, норм что я не могу решить такие задачи? сначала я вообще не понял условие, потом посмотрев ответ и почитав комменты вроде чуть подразобрался, но всё равно не могу написать даже приближенно правильного решения, очень загоняюсь, что не могу решить подобное, так еще и многие тут пишут, что то по типу "Хорошая задача", "Отличная задача, всё в условии разжевано, решил с первой попытки", может посоветуете как то подтянуть темы, или еще что то?
Matvey Shesterikov
51 уровень
Не могу решить задачу
Обсуждается
Комментарии (10)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
_McRey_
28 марта 2025, 20:27
Больше практики на темы которые ты плохо усвоил. Так же можешь изучить эту тему из других источников если тут не понятно
0
ГоффMaster
28 марта 2025, 00:25
Не знаю, может поможет, в дополнение к Денису свой опыт добавлю.
Мне задача понравилась, потому что дала возможность разгуляться по тому, что джава и ООП предлагают.
Нередко бывает, что формат входящих данных для обработки неудобен. Ну вот в конкретном случае у нас в каждой строке файла разные типы данных - айди, наименование, цена, количество. Это int, String, цена - double (так как там только два знака после запятой - можно в центах, это int, но отображаться оно должно поделённым на 100), количество - это чисто int.
Многие пытаются решить это несоответствие, прибегая к разным исхитрениям при обработке строк, ограничивая себя только этим типом данных.
Но вообще-то удобно будет данные сначала преобразовать в подходящие, удобные нам типы.
Не просто прочитать файл, а пропарсить его.
Потом обработать.
А потом преобразовать обратно в нужный для вывода текстовый формат и записать в файл.
Лишние операции? Да. Но они того стоят.
Задача делится на подзадачи, каждая из которых решается самостоятельно и может самостоятельно существовать.
* Вообще, это довольно стандартный подход при работе с данными/базами данных:
1. подготовить данные для автоматизированной обработки,
2. обработать,
3. подготовить данные к возврату и отдать их.
И тут джава в этой задаче раскрывает свои возможности. Поэтому задача и интересная.
К чему я клоню. Ты не стесняясь создаёшь свой собственный класс Item с полями id, name, price, quontaty нужных типов. ООП оно для того и есть, что бы создавать и юзать собственные классы.
Далее три этапа (подготовка, обработка, вывод) ты делаешь как отдельные задачи (методы).
1. Вызываешь метод пропарсить файл, который получает аргументом путь к файлу, а возвращает список объектов типа Item.
2. Работаешь с полученным списком, это будет просто, потому что данные в удобных для обработки типах.
3. Передаёшь список в метод вывода, который, отфрматировав, выводит в текстовый файл результат.
Главное - не забыть расписать эти вот методы парсера и вывода ;-)
+1
Денис Enterprise Java Developer
28 марта 2025, 07:05
Я банально через Item.toString() вывод организовал, но конечно было бы правильнее какой-то хелпер сделать.
А в целом подписываюсь, задача именно про это. Почти ETL система, только на минималках :)
+2
Денис Enterprise Java Developer
27 марта 2025, 11:18
Волшебного учебника "как научиться думать как программист" увы нет. Если я правильно понял, твоя проблема в понимании условия, потому нужно как-то разобрать именно этот момент. Попробуй понять что именно в условии тебе не понятно, тому должны быть причины. Может непонятный термин может еще что.
Твоя главная задача - понять что именно от тебя требуют, потом нужно будет просто "на словах" прикинуть какие именно нужно выполнить действия чтобы достичь ожидаемого результата. Например в задаче по CRUD если я правильно помню, у тебя там есть конкретная строка на вход и ожидается конкретный результат из нее сделать. Вот надо подумать что нужно с этой строкой сделать, чтобы она превратилась в результат. Например тебе нужно построить дату рождения из каких то частей строки, как их оттуда достать, что с ними сделать ну и подобные операции.
Задача действительно очень хорошая и интересная.
+2
Matvey Shesterikov
27 марта 2025, 19:33
частично да, я сначала не очень понял условия, но все же, тут, как написали в условии нужно юзать SimpleFormatDate вроде, также вызывать в IDE какой то режим параметров у мэйна, и как это все писать и реализовывать, у меня вызвало большое затруднение, настолько, что я психанул, и пришлось на задачи CRUD и CRUD 2 пришлось юзнуть ответ готовый, и вот я хочу узнать от более опытных людей, нормально ли что иногда на хард задачах вообще не могу разобраться, еще есть плохая привычка смотреть в ответ, если есть что-то то, что не проходили, но вызывает большие затруднения, что делать в таких ситуациях?
0
Денис Enterprise Java Developer
27 марта 2025, 21:07
Так а зачем психовать :) незнакомые технологии не значат что-то плохое, это повод с ними познакомиться. Тот же SimpleDateFormat не квантовая физика, в сети огромное количество его примеров. Та же история и с аргументами запуска из IDE, можно и на официальном сайте Jetbrains почитать документацию и так просто погуглить. И то и другое полезно и не раз еще пригодится.
Пользуясь готовым ответом ты сам у себя воруешь знания, твоя ведь задача здесь не все задачи закрыть, а решить их - это разные вещи. Если некоторые задачи именно сейчас кажутся сложными или непонятными - просто отложи их на пару дней, пройди курс дальше, потом вернёшься. Это более чем нормальная практика.
+2
ГоффMaster
28 марта 2025, 01:58
"Волшебного учебника "как научиться думать как программист" увы нет."
Ставишь на столик стакан с водой - на случай, если захочешь пить - уже наполовину программист: предусмотрел возможный вариант.
Ставишь ещё и пустой стакан, на случай если не захочешь - полноценный программист, предусмотрел все варианты))
+1
Денис Enterprise Java Developer
28 марта 2025, 07:07
Не все :) Если вдруг к тебе придут когда ни будь гости нужно будет построить автоматизированную систему выдачи двух стаканов с конфигурируемым наполнением, тогда и себе стаканы ставить удобнее будет.
+1
ГоффMaster
28 марта 2025, 10:01
К программистам гости не ходят :-)
0
Денис Enterprise Java Developer
28 марта 2025, 10:10
Все равно нужно быть готовым, иначе не труЪ :) Ибо какой ты программист без overengineering'а...
0