CRUD для таблицы внутри файла.
Напиши программу, которая считывает с консоли имя файла для операций CRUD и при запуске в зависимости от флага, переданного в параметрах
обновляет данные товара с заданным id или производит физическое удаление товара с заданным id (удаляет из файла все данные, которые относятся к переданному id).
Прайсы 2
- 20
Недоступна
Комментарии (499)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
tsushko karina
22 марта, 15:09
есть ощущение, что валидатор не принимает ничего кроме своего правильного ответа😡если написать программу точь в точь как правильное решение, за исключением имен переменных, он ее тоже не принимает😡😡
0
Екатерина Екатериновна
11 марта, 19:08
У меня валидатор не принял, хотя все удаляется/апдейтится. Нет сил с ним воевать, да ну нафиг.
Эту задачу решила через класс Product как в прошлой задаче, но сделала не лист а мап с ключом айди.
Скопировала пример для файла из условия задачи и огребла, там оказывается quantity не увеличено до 4 символов.
0
YuriSt
5 марта, 12:40
Прошлую задачу сделал своим способом без класса Product, в два раз короче код. Пришлось только подсмотреть как дописать строку через FileWriter, всё работало, но валидатор не пропускал.
Эту решил уже через класс Product с первого раза.
Задачи интересные!
Узнал много нового.
0
Татьяна
28 февраля, 17:54
Если не проходит третий пункт, проверьте, поставили ли вы после первого "case" break.
+1
SvetLana
6 февраля, 07:48
Почему в решении вместо того чтобы написать
String price = args[3];
пишут
String price = args[args.length - 2];
и зачем здесь вообще цикл?
for (int i = 2; i < args.length - 2; i++) {
name += args[i] + " ";
}
и зачем к имени прибавлять пробел? причём один
+1
Sun
6 февраля, 19:11
[args.length - 2] - потому что мы не знаем заранее какой длины будет массив args. Eсли в консоль введут название продукта из нескольких слов, например "Куртка для сноубордистов", то будет args[3] = "Куртка", args[4] = "для", args[5] = "сноубордистов", отсюда и необходимость в пробелах. А в args[6] и args[7] запишутся уже price и quantity соответственно.
+2
Екатерина Екатериновна
11 марта, 19:00
Да, но не проще ли решить проблему, задав наименование товара в кавычках:
-u 19847983 "какая то дорогущая фигня" 10000 5
Или мы не знаем, какой криворукий будет запускать программу?)
0
Человек
29 января, 13:43
Не, автопроверки это здорово... Не, правда, хорошая идея. Но вот идея не давать тест кейсы на которых программа завалилась - верх абсурда!
+1
Lafaed
28 января, 15:39
Вы решили задачу лучше, чем 51% учеников.
Вам удалось ее решить с 1 попытки.
Среднее количество попыток для этой задачи 3.43.
Всего эту задачу решили 16460 учеников.
При этом мой вариант умеет "-d" "-u" "-c"
Но я так и не догнал зачем строки разлагать на компоненты и сувать в Продукты, в итоге же мы всеравно оперируем строками.
1) циклом прочитал строки и каждую засунул в список
2) для уверенности очистил файл
3) Циклом прошелся по списку и проверил каждую строку.
Если строка подходящая (нужный айди в ней) тогда складываем новую строку из этой айди + аргументы маина.
Заменяем строку в списке на новую, ну или удаляем из списка (в зависимости от условий).
4) Циклом добавляем строчки в файл.
Кароче ту ересь что я наговнокодил, в итоге валидатор даже с 1го раза захавал!
+1
RaStudent
13 января, 09:42
Берем 1827, слегка переделываем, проходит проверку моментально.
Вместо стрим max используем .toArray(String[]::new) и юзаем System.lineSeparator()
Выкинул switch, не люблю лишнюю вложенность
0
Dmitry Student в Home
7 января, 17:34
не сразу заметил, что здесь в цене два нуля после запятой должно быть
0
SVCH
5 января, 21:04
Логичнее вместо метода public static Product getProduct(String string) создать еще один конструктор в классе Product
0