CrUD для таблицы внутри файла.
Считать с консоли имя файла для операций CrUD.
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id - 8 символов.
productName - название товара, 30 символов.
price - цена, 8 символов.
quantity - количе
Прайсы
- 20
- Недоступна
Комментарии (679)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Алексей 22 уровень, Зима
около 9 часов назад
Коллеги! Данную задачу можно решить с помощью: RandomAccessFile?
Отпишитесь, у кого получилось.
Решил задачу читая файл с конца, но валидатор решение не принимает!
0
Василий 20 уровень, Подольск
16 января, 14:29
Задача понравилась. Напрягла, но позволила окончательно разобраться с чтением/записью в файл и String.format(). Потратил много попыток на следующее - в IDE пример условия открылся так как-будто он на одной строке, пытался считывать не построчно а просто текст группами по 8,30... байт.
Сработало когда открыл условие в браузере и понял что продукты записаны и следовательно читать их надо построчно!!!! .readLine(). Пишу вдруг кто нарвется...
+1
Антон 18 уровень, Москва
12 января, 21:31
Как условия - странные, так и валидатор...
0
Олег Д 20 уровень, Москва
11 января, 11:50
я до задач по Круд - вау бодьшинство профессии можно будет заменить алгоритмом
я после задач по Круд - нууу нафиг
0
Матвей Бойченко 20 уровень
10 января, 15:22
Это pi а не валидатор, все работает как часы, протестировано на файле, но Это неодушевленное не хочет мою такую хорошую краткую реализацию через методы для записи в файл принимать крч пошел он, все условия выполняются а у него нет...
0
Максим Дудин 19 уровень, Калининград
5 января, 21:19
Работает, вроде, но не проходит проверку.... (как у всех), но есть момент работает в частном случае, но если что-то в исходном файле не так - проблема, Наверное можно порешать...это всё, но это контрпродуктивно. Подсмотрел эталонное решение (а чё делать, когда не знаешь что делать, что конкретно валидатору не нравится) там не дописывают, а считывают, потом на основе считанного формируют строку (с учётом условий), добавляют к считанному и перезаписывают файл. Сложно, но понятно.
P.S. эталонный вариант тоже не работает с неидеальный файлом ((
P.P.S оно вообще практически не работает, сразу кидает исключение
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 50
видимо не учитывает маркер последовательности байтов идущий первым, а я его учитывал ....=(
P.P.S. а потом этот маркер перестал добавлятся (фиг знает почему), но теперь другой косяк в имя добавляет и id и name
т.е записывает последний вот так - 19847984198478 Шорты пляжные черные 173.00 17
0
Aleksandr 28 уровень, Санкт-Петербург
5 января, 07:23
Тот случай, когда задача интересная, а качество валидации абсолютно ни в дугу. Ужасно обидно! Тут некоторые люди, как пишут, решали её десятки раз. Мне повезло обойтись 4-мя.
Программа ВСË ДЕЛАЛА СОГЛАСНО УСЛОВИЮ с первого же захода: и парсинг аргументов, и пробелы, и вычисление следующего айди, и вывод в файл. Но валидатор упорно заявлял "При запуске программы с параметрами "-c productName price quantity" в конец файла должна добавится новая строка с товаром". Хотя, всё там добавлялось, как надо.
Короче, я бы уже подглядел в готовое решение, потому что надо программированию учиться, а не как валю обхитрить. Бесит! Но повезло.
Короче, валя - очень слабое место проекта. Очень. Либо надо условия прописывать жёстче, чтобы, если у валидации будут какие-то явные требования по внутренней реализации программы, это в условиях явно бы отражалось. А то поди угадай, что ему надо.
P.S. Насчёт ООП. Я не заглядывал в готовое решение. Но тут пишут, что там ООП в полный рост. Вот хрен его знает, но я не вижу ничего элегантного в том, чтобы накручивать сложностей там, где не надо.
Нужен айди-плюс-один? Считываю файл построчно, вынимаю айди из каждой строки, нахожу максимальный. Больше эти строки мне не нужны, я их и не сохранял никуда. Ресурсы свободнее.
Нужно добавить строчку? Ну так дописываем её к готовому файлу (new FileWriter(fileName, true), где true отвечает за append.
Нужно обработать поля? Вот тут бы и пригодился ООП, вроде бы... А зачем? У нас всё строковое, кроме айди. Мы не парсим цену и количество в числовые форматы, не производим с ними действий. Всё, что нужно - правильно отформатировать. И это отлично делается без создания объекта с полями.
ИМХО, конечно.
+2
Future Man 22 уровень
2 января, 13:02
Не опять а снова, валидатор привязывается к решению, а не к результату!!
Написал свой кода (да не элегантно и процедурно по факту, на 10 строчек больше чем в гоотов рещении) НО он же работатет, все добавляет, ID увеличивает, форматирование совпадает по кол-ву символов... В итог принял готове решение, конечно оно элегантней и по ООП.... Ну тогда надо было писать, создайте класс такой то, подумайте какие поля и тд и тп.... У кого прога рабоатет исправно, но при этом не пропускает валидатор, то забейте тк условия для принятия валидатором нам не известны, а так гадать и нервы тратить со временм мало удовольствия...
+1
Игорь 22 уровень, Братск
28 декабря 2020, 07:21
Не могу понять, что от меня хотят в этой задаче
+2
Владимир Коземаслов Жук в Муравейнике
14 декабря 2020, 20:06
Потрачено 5 часов времени, задача решена с 1 попытки. Почитайте лекции профессора перед задачами.
P.S. Перед добавлением новой строки в файл, не забудьте добавить символ переноса строки fileOutputStream.write('\n');
+1