Прайсы

  • 10
  • Недоступна
CrUD для таблицы внутри файла. Считать с консоли имя файла для операций CrUD. Программа запускается со следующим набором параметров: -c productName price quantity Значения параметров: где id - 8 символов. productName - название товара, 30 символов. price - цена, 8 символов. quantity - количе
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (251)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Тимур18 уровень
7 часов назад
20 попыток... Integer.parseInt() не работает, если есть хоть 1 пробел в строке... глупая моя ошибка...
Вадим19 уровень, Киев
10 июня, 14:27
Я так розумію,що валідатор агриться на RandomAccessFile
Роман Князев20 уровень, Санкт-Петербург
12 июня, 12:03
как победил? У меня была иденитчная проблема, потом запилил дыру и теперь ошибок нет, но и валидатор не дает оценку)
Вадим19 уровень, Киев
суббота, 10:57
Я зробив через 2 потоки(вхідний і вихідний) Спочатку зчитав всі дані, закрив вхідний потік, відкрив вихідний і записав. Раніше цей спосіб не працював через те,що одночасно відкрив вхідний і вихідний потік на один і той же файл.
Арсений20 уровень, Санкт-Петербург
9 июня, 16:38
Капец, уже вторую задачу пытаюсь решить создавая класс и пользуясь ооп по возможности. Валидатор рубит на корню. Работает так как нужно, но требования всё равно не выполнены....... ужас Ладно бы у нас был С или там другой процедурный язык (
Бетти19 уровень, Санкт-Петербург
15 мая, 12:08
Жесть. 14 попыток. Записывала в файл конструкцией BufferedWriter(FileWriter). Короче, нужно сначала отдельно записать символ переноса строки - write("\n"); Затем вставить строку с символом переноса строки в конце. И да, максимальный индекс не обязательно будет в конце файла стоять (об этом был комментарий, но подниму на всякий случай). Треш какой-то, а не уровень.
IlyaB26 уровень
28 апреля, 16:37
Добавил класс Product Сделал два конструктора: один со строкой из файла, второй с параметрами Считал все строки, добавил в List, создал объект Product из args добавил в List, записал в старый файл всё из List... - 27 попыток Сделал "по-простому" - 1 попытка
skybright22 уровень
25 мая, 19:15
Сделал все примерно так же через Product ибо чую, что далее это легче будет апгрейдить. Потратил около 3 часов на тесты и удовлетворению заданию. На все про все ~75 строк кода. Решил с 1 попытки:
Владимир20 уровень, Москва
24 апреля, 15:30
кто-нибудь пробовал переиспользовать клас написаный в одном таске в другой задаче? например, клас из task 1827 использовать для 1828?
Семён22 уровень, Екатеринбург
21 апреля, 21:02
У меня было 2 косяка: 1) (4 пункт валидатора) при записи в файл нужно сначала делать перенос строки, а потом уже писать строку, а не наоборот, чтобы не получилась пустая строчка в конце файла 2) (5 и 6 пункты валидатора) у меня была ошибка при считывании из строки id товара методом subsstring(0,7), а надо было substring(0,8). Только потом еще раз прочитал описание метода: начиная с индекса первого параметра включительно, заканчивая индексом второго параметра !!!не включая!!! - глупая ошибка Не наступайте на мои грабли.
Nikita Poleshko20 уровень, Новосибирск
25 мая, 12:32
а можно было паттерном Pattern pid = Pattern.compile("^[\\d]{1,8}"); Matcher m = pid.matcher(string);
Владлен22 уровень, Санкт-Петербург
19 апреля, 15:20
Может кому-то поможет: Если всё работает, но валидатор ругается на "неверно" найденный id и что формат строки, которую добавляем должен соответствовать условию - это просто нужно сначала String привести к long, а потом уже искать максимальный элемент. Если у кого валидатор ругается, что при отсутствии параметров не должно произойти изменений, так это он хочет инициализации переменных нулями, уж потом в try-catch присваивать args...По крайней мере у меня вышло так.
Михаил33 уровень
17 апреля, 17:30
Здравствуйте, написав задачу Прайсы, я, как обычно, полез в коментариии за уточнением вещей, которые не до конца раскрыты в условии, ну и еще чтобы найти более элегантное решение (мое текущее решение в 200+ строк, что не есть хорошо). Увидев такую конструкцию :
String productName = String.format("%-30.30s", args[1]);
String price = String.format(Locale.ROOT, "%-8.2f", Double.parseDouble(args[2]));
String quantity = String.format("%-4d", Integer.parseInt(args[3]));
я удивился, как она работает, ведь String[] args массив строчек, разделенный по пробелу. То есть, если будет product вида "Майка черная полосатая", то в args[1] будет хранится только строка "Майка". Или если будет строка без пробелов, то она вся будет хранится в первом аргументе. Можете объяснить, это я чего то не понимаю или у меня так IDEA настроена? И, конечно, хотелось бы узнать, как улучшить код (ссылка на git Мой код). Пока что, у меня есть следующие вопросы и предложения: 1) Нужно ли закрывать BufferedReader каждый раз, перед тем, как создать/открыть новый BufferedReader? (ответ логичный, да, потому что будет вызываться методы классов, которые были "обернуты" в BufferedReader. Но, может быть я еще что то упускаю? 2) Да, id из файла можно было получать намного легче при помощи substring() (из комментов узнал) 3) String format для форматирования создания строк, хорошо, но сначала их нужно строку параметров собрать, чтобы форматировать. Поэтому возвращаемся к самому началу вопроса по поводу String[] args. 4) И по поводу StringBuilder. Как его обнулять? Опять выделять память или делать что то типа такого
stringBuilder.setLength(0);
Андрей34 уровень
13 апреля, 20:02
А мне понравилась задача, делал долго, но в принципе понятно, что должно быть и как должно работать.