Прайсы

  • 10
  • Недоступна
CrUD для таблицы внутри файла. Считать с консоли имя файла для операций CrUD. Программа запускается со следующим набором параметров: -c productName price quantity Значения параметров: где id - 8 символов. productName - название товара, 30 символов. price - цена, 8 символов. quantity - количе
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (291)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Сергей19 уровень, Екатеринбург
пятница, 14:01
Несколько попыток борьбы с байтами в начале - и прошло. Хочу заметить, для тех, кто тут еще будет: id - это число из очередной строки с индексами нулевой - седьмой, извлеките строку id не опираясь на его длину!
Pavel20 уровень
11 сентября, 14:46
Если у кого-то возникла проблема с Валидатором по пунктам 4-6, когда всё вроде работает, а задача не проходит проверку, советую просмотреть свой код на наличие класса "File" и удалить его. Данный код Валидатор не пропустит:
File fileName = new File(new BufferedReader(new InputStreamReader(System.in)).readLine());
Замените на конструкцию типа:
String fileName = new BufferedReader(new InputStreamReader(System.in)).readLine();
Александр19 уровень, Киев
11 сентября, 10:50
Ну и потрепали мне нервы эти Прайсы 😠
MartyMcAir19 уровень
1 сентября, 12:12
Не плохо было бы описывать задачи ЧЁТЧЕ. (И то что нужно чтоб выполнялась только одна CRUD команда. А не должна считать имя файла для операций CrUD с консоли. - т.е. неплохо было бы явно писать что нужна только одна команда а ВСЕ CRUD _ т.е. create delete update) Вообщем в файле хранятся данные в виде: 1234567 Шорты пляжные синие 159.00 1234 , а запускается прога с параметрами вида: -c Шортыпляжныесиние 150.00 1235 А на выходе т.е. записуется в файл вот в таком виде: 1234568 Шортыпляжныесиние 150.00 1235.. А Иначе бы проверку тестами не проходило.. Ведь если бы в параметрах было бы как: 198478 Шорты пляжные черные с рисунко173.00 17 - то каждый пробел в параметрах это следующий элемент массива args[]. А значит надо было бы в цикле сначала получать все элементы, а после их обрабатывать и т.д.. И ещё: ___При запуске без параметров список товар долж остаться неизмен - убирается строкой проверки args на 0 (а не простым и понятным отсутствием действий - что кстати и надо по заданию.. - чтоб файл не изменялся) ___Сначала необходимо найти в файле максимальный id, и при записи увеличив этот id+1 (а не получаем последнюю строку в файле и берем от туда id _ т.е. в файле записи не по id порядку.) ___Форматирование строк, для формирования строки чтоб записать в файл.. проганяем через цикл, например для args[1] = productName, если его длина меньше 30ти то добавляем недостающие пробелы до 30ти +" ".
Деня23 уровень, Москва
5 сентября, 00:55
спасибо, даже не подозревал что у них в файле id не по порядку. Ведь и намека не оставили.
Anatolf20 уровень, Санкт-Петербург
31 августа, 19:58
шаблон входящих значений такой: args[0] = -с args[1] = productName args[2] = price args[3] = quantity Мне это стало понятно только после прочтения комментариев.
Георгий20 уровень, Губкинский
30 августа, 13:28
Валидатор постоянно ругался на "Товар должен иметь следующий id, после максимального, найденного в файле.". По моей логике максимальным значением должна быть последняя запись, поэтому я просто брал последнюю строчку и из неё брал Id, после седьмой попытки понял, что максимальное может быть и в середине файла, поэтому мне пришлось через цикл находить максимальное. После этого валидатор принял.
Igor Zip20 уровень, Одесса
26 августа, 08:13
Не понятно как должна запускаться программа: вот так : -с Куртка для сноубордистов, разм10173.991234 или вот так: -с "Куртка для сноубордистов, разм" 10173.99 1234 В первом случае тяжело аргументы выбрать из параметров, я во втором все понятно
Иван20 уровень, Новосибирск
21 августа, 07:29
Коллеги, прошу прощения за вопросец, но кто подскажет как и где поменять кодировку, чтобы при перезаписи русских букв не выдавалась подобная фигня: 19846 ����� ������� ����� 159.00 12 198478 Volosa 1,00 15 19847983������ ��� �������������, ����10173.991234 Т.е. кириллицу перезаписывать нормально вообще не хочет IDEA. P.S. Пробовал через блокнот и реестр менять кодировку на UTF-8. Через командную строку отображается код 866
Yerzhan20 уровень
22 августа, 17:23
я ооооочень долго тоже мучился, сама задача решается быстро. А с кодировкой мучался два дня, весь инет перечитывал и наконец то получилось. Не уверен конечно, что все правильно понял, но валидатор принял и самое главное все записи на русском как вначале так и в конце добавилась правильно. 1. У UTF-8 есть два варианта: with BOM и without BOM. BOM - это маркер который ставится вначале файла, обычно это три байта для UTF-8. Потому я не мог вытащить id товаров вначале, постоянно парсинг строки не проходил. Поэтому лучше сохранять файл without BOM, тогда этих байтов не будет. 2. Я создал свой файл в UTF-8 без BOM и считывал, указывая кодировку: BufferedReader readerStroka = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8)); и запись в файл делал, указывая кодировку: BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true), StandardCharsets.UTF_8)); и все получилось красиво, по крайней мере, у меня. Тут куча нюансов с кодировкой, потому желательно указывать кодировку, потому по умолчанию кодировка может не совпадать с системной и т.д. Информации очень много в инете, вот можешь почитать одну из них: http://skipy.ru/technics/encodings.html
Иван20 уровень, Новосибирск
26 августа, 08:16
Благодарю!
Leftover18 уровень, Москва
пятница, 14:06
С кодировкой видимо какой-то баг в ИДЕЕ. Я просто в Settings поменял "Project Encoding" c Windows - 1251 на Windows - 1252, применил, затем поменял обратно и кириллица стала отображаться нормально в консоли. Edit: Все оказалось не так просто. Через некоторое время опять вернулись "кракозябры". Рандомные изменения в Project Encoding рандомно возвращают кириллицу :) Добавил папку проекта JavaRush и назначил ей UTF-8. Пока работает (но это не точно :)
Eduard Khvan20 уровень, Прохладный
18 августа, 15:06
Первая задачи, которую я оставлю на потом(Прайсы2 тоже)
Денис Бурков25 уровень, Москва
17 августа, 11:13
Пока насиловал валидатор потерял половину волос. Пара подсказок тем, кто только начнет или уже отчаялся: 1. делать через FileReader fr = new FileReader... 2. В условии это написано: "В файле данные хранятся в следующей последовательности (без разделяющих пробелов): id productName price quantity" по факту все id хранятся в формате: 8 символов ( 12345пробелпробелпробел ), то есть извлекать id нужно line.substring(0, 8); а далее заменять все пробелы на пустоту line.replaceAll(" ", ""); Дальше много комментариев по поводу записи данных в файл, все не проверял, но сказать могу, что с условием if (args.length !=0 && args[0].equals("-c")) { запись в файл } и с обрезкой записываемых данных в нужном формате (........ args[1]).substring(0,30)); валидатор принял. хорошая статья про форматирование строк- https://hr-vector.com/java/formatirovanie-chisel-strok. Всем удачи и терпения.
Georgiy41 уровень, Москва
25 августа, 18:02
if (args.length !=0 && args[0].equals("-c")) А эта штука по идее должна выдать ошибку, если args.length == 0, то как он проверит второй операнд в условии?
Павел20 уровень
1 сентября, 06:38
Именно это и приходит первым в голову - делать через FileReader. Но авторы курса те ещё инквизиторы, хотят через FileInputStream, потому что FileReader это тема следующего уровня.