Прайсы

  • 20
  • Недоступна
CRUD для таблицы внутри файла. Напиши программу, которая считывает с консоли путь к файлу для операций CRUD и при запуске со следующим набором параметров: -c productName price quantity добавляет товар с заданными параметрами в конец файла, генерируя id (8 символов) самостоятельно путем инкремента максимального id, найденного в файле.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (778)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ilyas Dzhalilov
Уровень 29
16 сентября, 15:36
Задача в целом интересная и мне понравилась. Есть над чем поработать! Но то ли задание описано не правильно, то ли валидатор. В моём файле формируется точно как в примере, но валидатор аж 3 ошибки выдает: 1. При запуске программы с параметрами "-c productName price quantity" в конец файла должна добавится новая строка с товаром. 2. Товар должен иметь следующий id, после максимального, найденного в файле. 3. Форматирование новой строки товара должно четко совпадать с указанным в задании. Прям смешно! Не знаю, забить на него и посмотреть правильное решение или тратить дальше время...
L1merHS
Уровень 19
17 сентября, 11:28
Были абсолютно такие же ошибки. Потратил 2 часа, чтобы валидатору наконец понравилось мое решение. 1. Зависит от того, в каком месте делаешь переход на новую строку. Я сделал в конце, не принял. Если поставишь переход перед добавлением основной строки, ошибки не будет. 2. Тут просто невнимательно прочитал требование. Для начала, нужно найти максимальный id из существующих, и только потом сделать инкремент. Я же просто увеличивал последний id, так как по логике, они и так будут в порядке возрастания. Чтобы решить эту проблему, нужно просто добавить все id в ArrayList, и с помощью метода Collections.max() найти максимальный. 3. Пропадет, если сделаешь 2. Очень капризный валидатор, вроде по логике все правильно, и работает как надо, но ему нужно чтобы ты повторил именно его решение. Бывает, что просто выносишь код в отдельный метод, уже не проходит проверку.
Ilyas Dzhalilov
Уровень 29
17 сентября, 13:29
Спасибо, что пытался помочь, но делал ровно так как ты предлагаешь :) Пока решил отложить эту задачу и добить чуть позже. Возможно это меня чему-то дополнительно научит.
Ilyas Dzhalilov
Уровень 29
17 сентября, 20:43
По итогу задание было легче, чем могло показаться прочитав содержимое файла. Наименование товара тупо лежит в args[1] и нет там никаких пробелов. Просто считал аргументы сложил в строчку и сунул в файл. Валидатору это понравилось. И да логика генерации id не менял. Теперь его всё устроило )))
Виноградина
Уровень 32, Berkeley, United States
14 сентября, 05:11
кстати кому то наверное пригодится
String.format("%-8d%-30.30s%-8.8s%-4.4s", id, args[1], args[2], args[3]);
еще кстати, похоже что id могут идти не по порядку, пока не учел это в реализации валя не принимал
Виноградина
Уровень 32, Berkeley, United States
14 сентября, 05:16
интересно в ответах .30 и остальные не стоят, а у меня без них не приняло
Виноградина
Уровень 32, Berkeley, United States
14 сентября, 05:17
а понял почему, они подрезают в другом месте длину но как у меня проще и короче
Raviletti
Уровень 24, Винтерфелл, Вестерос
6 сентября, 15:43
Решил со второй попытки из-за того что забыл убрать весь мусор для тестов. Мучался часов 20 в сумме. Сложнее всего было вытянуть информацию из файла и использовать ее для добавления нового id. Оказалось все можно было сделать намного проще, чем это реализовано у меня 😒
zuas
Уровень 28, Нижний Новгород, Россия
29 августа, 21:35
"Форматирование новой строки товара должно четко совпадать с указанным в задании." у них же выше - пример содержимого файла где последнее поле quantity вместо 4 занимает 2 символа..рукалицо...Пример содержимого файла некорректен, если он должен задавать образец: в первой и второй строке в конце не хватает по 2 пробела...делал ненужный trim() в последнем поле чтобы соответствовать "образцу"
aleksdenni
Уровень 37, Полтава, Украина
27 августа, 20:40
Первый if для запуска остального кода сделал через args.length>0 . id вытянул через substring() пробелы добавил через форы. Может есть способ попроще , но не особо хочется искать 😸
Максим Глотов
Уровень 33, Новосибирск
18 августа, 13:26
Хреново, что не было у "десятикурсников" этих паттернов. Надо бы подтянуть эту тему. Обошелся без них. Новую строку в записи можно добавлять командой newLine()
Nadezhda Tarasova
Уровень 19, Гродно, Беларусь
17 августа, 12:07
так как по условию задачи мы должны реализовать только добавление(create) и не идёт речи про удаление, обновление или чтение(delete, update and read), то её стоило назвать просто C, но в таком случае половина пользователей даже не стала бы её открывать, подумав что сейчас их заставят учить язык-прародитель java и за это дают всего 20 единиц материи
Алексей
Уровень 19
10 августа, 09:48
5 попыток потрачено на игру "Все работает, но... - угадайка что не нравится валидатору"
Владимир Назаренко
Уровень 20, Москва, Россия
23 августа, 17:00
У меня на эту игру уходят иногда десятки попыток, а потом, после того как вдоль и поперёк протестировал и убедился, что моё решение тоже работает - копирую "верное решение" и отправляю его на проверку. Жесть, конечно, но чо-то какая-то неинтересная игра поэтому вот так делаю.
Аль Каполли
Уровень 26, Москва
7 августа, 10:27
Сделала через String.format("\n%-8d%-30.30s%-8.8s%-4.4s", ++maxId, args[1], args[2], args[3]), где "-" - это выравнивание по левому краю, число до точки - это ширина до которой вставляем в случае чего пробелы, число после точки - ширина, после которой обрезаем строку. В общем и целом строка форматирования имеет вид %[флаги][ширина][.точность][размер]тип На вики в статье про функцию printf можно подробно почитать про модификаторы и спецификаторы в строке форматирования
Yarik Таксист в Яндекс.Такси
24 июля, 16:00
Решал целый день..... 🥴