Прайсы 2

  • 20
  • Недоступна
CRUD для таблицы внутри файла. Напиши программу, которая считывает с консоли имя файла для операций CRUD и при запуске в зависимости от флага, переданного в параметрах обновляет данные товара с заданным id или производит физическое удаление товара с заданным id (удаляет из файла все данные, которые относятся к переданному id).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (444)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Dmytro
Уровень 24, Киев, Украина
23 мая, 08:14
Приятно видеть что свое решение проще и короче правильного (возможно не такое гибкое). Но не стоит забывать что программу не раз перепишут и гибкость тоже важна. Уложился в 56 строк вместе с комментариями.
Anonymous #3036451
Уровень 22, Falls Church, United States
8 мая, 18:36
Одно из правил хорошего кода гласит: метод должен быть коротким и выполнять только 1 задачу. Очень жаль что в правильном решении забыли про это правило. Обязательно нужно провести декомпозицию метода main.
Andrey
Уровень 34, Санкт-Петербург, Россия
27 апреля, 19:10
Далее небольшой спойлер! Борьба с валидатором - это поиск правильного из правильных решений. Написал программу в 70 строк, которая работала в методе main() и не создавала никаких новых классов. Посмотрел в готовое решение, там пошли через создание нового класса в Solution. Да, красиво, да, более гибко, но 104 строчки кода и результат один. Ну, все же спасибо, посмотрел на красоту. Только вот совсем загадка как работает валидатор 🤨
Zuzu
Уровень 25, Польша
12 марта, 02:44
Долго пытался найти способ оминуть Array и сделать непосредственными манипуляциями в самом текстовом файле. После 4 часов мучений, сделал все таки через Array и даже к моему удивлению прошло с первой попытки. Но у меня вопрос, кто знает есть ли методы, непосредственного удаления одной строки текстового файла либо перезапись ее на новую? Напишите как вы видите решение напрямую в самом файле.
val
Уровень 35, Москва
5 марта, 00:29
кто объяснит, в чем разница?! почему валидатор не пропускает
for(Product product:buffer){
            fileWriter.write(product+"\n");
        }
пришлось подсмотреть правильное решение:
for (Product product : buffer) {
    fileWriter.write(product.toString());
    fileWriter.write("\n");
}
Илья Frontend Developer в Команда 1DevFull
21 апреля, 09:36
в первом варианте ты параметром передаешь объект класса, а во втором варианте ты передаешь строку которую возвращает метод toString объекта Product
Дмитрий S
Уровень 19, Санкт-Петербург, Россия
20 февраля, 15:32
Уже которую задачу наблюдаешь свой результат и потом смотришь в "правильный ответ" и пытаешься угадать, а чего же хочет валидатор. В принципе это демотивация, если не сказать крепче. +Предыдущая задача принимала файл без хвостового перевода последней строки, в "правильном" варианте этой он с переводом
Space Jockey
Уровень 25, Москва, Россия
15 февраля, 12:48
Задача показалась мне по-настоящему сложной, поэтому я решил расписать решение. 1. Считать с консоли название файла. 2. Создать ArrayList. 3. Открыть поток FileReader и в цикле while добавить строки в ArrayList, закрыть поток. 4. Если args.length > 0 тогда в цикле for
String id = arrayList.get(i).substring(0, 8).trim();
Далее если id совпадает и args[0].equals("-d") тогда удаляем строку из ArrayList, а если args[0].equals("-u") тогда я использовал такую строку:
arrayList.set(i, String.format("%-8s%-30s%-8s%-4s", args[1], args[2], args[3], args[4]));
5. Открыть поток FileWriter и записать строки из ArrayList в файл, добавив "\n", закрыть поток.
Avenger
Уровень 28, Минск, Belarus
31 марта, 10:30
У меня такое же решение, только у тебя подсмотрел как одной строчкой записать замену строки, а я расписывал сначала каждый параметр отдельно под нужный формат.
Сергей
Уровень 38, Тюмень, Россия
4 мая, 14:38
Чувствую, нужно перечитать про String.format. В предыдущей задаче создал метод, которому передаю строку и длину и тот либо обрезал, либо добавлял пробелы. После того как валидатор принял, сравнился с правильным решением и офигел)
ncallie
Уровень 32, Казань, Russian Federation
7 февраля, 15:30
Что-то меня смущает что в "Правильном решении" мы весь файл запихиваем в ArrayList. Как бы это сделать без полной перезаписи файла. А то в реальности файл может быть приличного размера. (даже если это учебная задачка)
The Body of the Atr
Уровень 47
4 февраля, 19:52
Всего эту задачу решили 14376 учеников - познавательно что такие задачи решает решать только треть от потока.
RuMirNul
Уровень 41, Тверь, Russian Federation
6 февраля, 16:38
Если верить комментариям, то задачи на 50 уровне решают меньше 2000 )
Николай Лехманов
Уровень 29, Санкт-Петербург, Russian Federation
15 мая, 16:51
Всего эту задачу решили 14944 учеников.
Yuri_S Инженер-конструктор 2к.
20 января, 06:53
Мем в том, что я взял своё решение из предыдущей задачи и дописал 2 кейса (не изменяя все остальное ВООБЩЕ). Валидацию прошло. А в предыдущей задаче валидацию не проходит 😂🤣