Прайсы 2

  • 10
  • Недоступна
CrUD для таблицы внутри файла Считать с консоли имя файла для операций CrUD Программа запускается с одним из следующих наборов параметров: -u id productName price quantity -d id Значения параметров: где id - 8 символов productName - название товара, 30 chars (60 bytes) price - цена, 8 символов quant
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (210)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Сергей19 уровень, Минск
вчера, 20:20
Понравились последние 2 задачи
Edffom19 уровень, Мирный
8 декабря, 15:50
последняя задача, ура. все меньше бойцов решают
Лев Садовский20 уровень, Краснодар
8 декабря, 12:47
Валя агрится на третий пункт, если цена с двумя нулями после точки из args округляется до одного нуля в файле. Не надо Double.parseDouble(). Надо просто args[3].trim() записывать. Шесть попыток вместо одной из-за этого драного нуля
Гудини23 уровень, Санкт-Петербург
21 ноября, 17:23
Кто-нибудь решал с помощью temp файла или все копировали файл в массив строк? И примет ли такое валидатор? И еще - параметры как передаются в программу, так же как они в файле хранятся или через пробел? Просто в агрументы приходят строки без пробелов.
Юра25 уровень, Киев
22 ноября, 14:04
Я считывал данные в LinkedHashMap, она хранит данные в порядке добавления. Потом по id менял в этой мапе данные или удалял в зависимости от параметра и записывал все обратно в файл. Параметры передаются через один пробел
Dmitriy22 уровень
23 ноября, 21:21
Я делал через ArrayList. При чем заполнял его по ходу чтения. Если это удаление, то просто тупо пропускаем строку, а если апдэйт - то подменяем данные и добавляем обновленную строку в массив. Потом пишем массив в файл и все
Aleksandr Liadov20 уровень, Самара
30 ноября, 01:54
я формировал одну строку String result. в конце прогаммы перезатирал существующие данные, своим result. outputStream.write(result.getBytes()); Валидатор скушал
Владимир20 уровень, Москва
18 ноября, 19:05
Всё чаще решение задач превращается в пустую борьбу с валидатором. Совершенно непонятно, что валидатор ожидает запись через объект типа OutputStream и не принимает варианты с FileWriter или PrintStream. Всё больше разочарование, слишком уж много борьбы с валидатором, который, при этом, часто навязывает такое решение, которое в продакшн не пустил бы даже самый слабоумный, а адекватные решения не принимает, причём, иногда, с совершенно непрозрачной формулировкой или вообще просто с сообщением об ошибке при валидации в модальном окне. Печально всё это. Блин, и почему я не могу увеличить поле ввода текста? Это же элементарно добавляется! В общем, масса самых разных раздражающих мелочей, пичот!
Иван Ващенко20 уровень, Москва
7 ноября, 10:09
делал как и предыдущую задачу через TreeMap, не проходило по пункту, что заменяемая строка должна находиться на том же месте, что и старая. Подумал, что из-за добавляемого в конец символа перехода строки. Попробовал не прошло. Оказалось, что это из за автоматической сортировки в TreeMap, заменил на LinkedHashMap и все прошло.
PumpyJumpy20 уровень, Краснодар
19 ноября, 14:10
использовал HashMap и узнал, что он сортирует "как хочет"
Alexander20 уровень, Саратов
20 ноября, 21:35
Огромное спасибо, тоже помогло
BiT400019 уровень
4 ноября, 13:19
Почему в файле при любых вариантах ничего не меняется? Валидатор ведь всё принял. https://codeshare.io/a3m1w1
VladSL24 уровень, Уфа
5 ноября, 18:50
Попробуйте прямо в цикле записи использовать flush() сразу после записи очередной строки
Иван Ващенко20 уровень, Москва
7 ноября, 12:05
тоже с FileWriter беда такая была, сделал через FileOutputStream. А код похожий )))
Егор Гераськин20 уровень, Саратов
1 ноября, 19:19
Warning: PrintStream система не принимает. Используйте OutputStream или другие классы для вывода.
Оксана24 уровень, Новосибирск
25 октября, 20:41
Долго не могла понять, почему валидатор ругается на пункты 3, 4, ведь у меня на тестовом файле все работало как надо. А просто не убрала пробелы из сравнения строки ArrayList с аргументом id (у меня id состоял из восьми символов): if (str.substring(0,8).equals(args[1])) { Добавила trim() и задача решилась: if (str.substring(0,8).trim().equals(args[1])) { Может кому-то поможет мой комментарий.
Sergant29 уровень, Санкт-Петербург
23 ноября, 14:38
Спасибо. Помогло
Антон Абрамов23 уровень, Санкт-Петербург
21 октября, 11:22
Не забыл закрыть потоки и сразу с первой попытки!) Не пишите сразу в файл, пишите в StringBuffer, а уже потом в файл!