Прайсы 2

  • 20
  • Недоступна
CRUD для таблицы внутри файла. Напиши программу, которая считывает с консоли имя файла для операций CRUD и при запуске в зависимости от флага, переданного в параметрах обновляет данные товара с заданным id или производит физическое удаление товара с заданным id (удаляет из файла все данные, которые относятся к переданному id).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (402)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Serg
Уровень 33, Санкт-Петербург
undefined, 14:48
После предыдущей эта показалась очень легкой, я просто каждый раз перезаписывал изменяемый список.
furmish
Уровень 29, Санкт-Петербург, Russian Federation
undefined, 22:36
Весь кайф от этой серии задач потерян из-за валидатора, которому, например, НЕ ВСЕ РАВНО как переносить строку.
"\n%-8d%-30s%-8s%-4s"
"%-8d%-30s%-8s%-4s\n"
Игорь Евгеньевич
Уровень 29, Хабаровск, Россия
19 октября, 06:25
case "-d": { int id = Integer.parseInt(args[1]); Product productToDelete = null; for (Product product : products) { if (product.id == id) productToDelete = product; } if (productToDelete != null) products.remove(productToDelete); break; } Это часть кода разработчика которая удаляет строку из файла(в данном случае ArrayLista). При попытке просто удалить из листа элемент программа ConcurrentModificationException кидала. Я решил через второй лист в который в случае "-u" копирую первый лист и дополняю новой записью, а в случае "-d" копирую всё кроме того у чего совпал id. Проблема в том что я не понял решение разработчика. Что за productToDelete такая созданная вне цикла, что при присвоении ей в цикле значения из листа, её потом можно из этого листа удалять? Объясните пожалуйста, кто понял?
Юрий
Уровень 18, Киев
12 октября, 20:28
Я решил с помощью ArrayList и StringBuilder.
ArrayList<ArrayList<StringBuilder>>
Я перезаписывал файл полностью.
Михаил
Уровень 19, Минск, Беларусь
11 октября, 10:45
Это просто жесть, а не задачи. я не понимаю, как все их решают без подсказок и не заглядывая в правильное решение. я только код правильного решения могу час разбирать, чтобы понять что к чему, не говоря про то, что самому его надо набрать
5 октября, 09:23
Задача интересная, решил с первой попытки, долго сидел дебажил, оказывается тупил с закрытием райтера!!!! Будьте внимательны если не ЗАКРОЕТЕ ЗАПИСЬ, даже если код верный, то не перепишет СТРОКУ!!!
Raviletti
Уровень 25, Винтерфелл, Вестерос
8 сентября, 21:27
Шесть попыток, из-за того что валидатор не пропускает рабочее решение, в котором в качестве буфера используется отдельный файл, не наступайте на мои грабли. С другой стороны, это хороший опыт
Alexander G.
Уровень 22, Москва, Россия
24 августа, 12:01
Я [который сделал в классе product проверку на каждое цифровое поле, переопределил метод toString, чтобы он переводил каждое численное поле в строку и форматировал вывод] доволен собой. Валидатор: При запуске программы с параметрами "-u id productName price quantity" должна обновится информация о товаре в файле.
Alexander G.
Уровень 22, Москва, Россия
24 августа, 12:02
такие задачи способны развить комплексы
BobaFoba
Уровень 18, Рязань
undefined, 12:11
валидатор способен развить комплекс инвалида
Елена
Уровень 22, Киев
17 августа, 21:38
Класс, мне понравилась задачка. У меня вышел очень простой код. 1. Прочитали имя 2. Создали Эрей лист 3. Открываем цикл: 3,1 Читаем строку 3,2 Откусываем первые 8 символов и сразу отбрасываем пробелы остается СТРИНГ ID 3,3 Если ID совпала (equals) с аргументом (1) (в инт можно не переводить), то проверяем арг(0) 3,3,1 если арг(0) equals -U то просто приводим строку к нужному формату добавляя пробелы к строчным аргументам ("%-8s%-30.30s%-8.8s%-4.4s" ) и добавляем ее в лист 3,3,3 если арг (0) equals -D, то просто пустой оставила(не знаю правильно или нет, без проверки на Д не тестировала) 3.4 Если 3,2 не совпала с аргументом (1), то считаную строку просто добавляем в лист цикл закрыли, файл ридер закрыли 4. Открываем файл райтер и закидываем все содержимое Эрей листа. 5. Закрываем райтер. Надеюсь не сильно запутала. Первый раз решила написать комментарий. Может кому-то поможет!
Евгений
Уровень 20, Великобритания
24 сентября, 09:13
%-8s%-30.30s%-8.8s%-4.4s что значат точки ? 30.30s 8.8s и 4.4s ?
Dmitry Enterprise решения на C#
2 августа, 18:45
Решил вариантом с записью строк в память, а затем их модификации. Это, конечно, не идеальный вариант, но при малых объемах данных вполне подойдёт. Совет для тех, кто решил использовать Map: у вас получится. Используйте LinkedHashMap