Решил задачу таким вот образом (прикрепленное решение). Алгоритм такой: 1) Берем из консоли адрес файла и закидываем в BufferedWriter. 2) Инициализируем необходимые переменные значениями из параметров. 3) Создаем стринговый список, закидываем туда все строки из нашего файла. 5) Исходя из того, что каждая новая строка это новая запись с товаром, в которой первым значением идет id, создаем массив, который будет через сплит забирать первые N цифр каждой строки (пока не упрется в НЕ цифру). 6) Сортируем созданный ранее массив и увеличиваем самый большой элемент на единицу, присваиваем полученное значение новому id. 7) Пишем отформатированную под требования задачи строку, добавляем ее в файл. 8) Закрываем потоки. Ура! Все работает прекрасно. Но что не нравится валидатору? Обозначу сразу ключевой недостаток моего кода, который делает его менее универсальным: - Поиск id опирается на утверждение: каждый товар занимает ровно одну строку. То есть каждая строка начинается с айди. В принципе по условию задачи так быть и должно. Но если допустить, что одна позиция занимает две и более строк, тогда мой алгоритм поиска айди не сработает. В таком случае необходимо писать регулярку и выцеплять из текста все совпадения на 1 до 8 цифровых символов (цена у нас дабл, поэтому она не попадет в список). Но вроде как сейчас рано применять регулярки, какой то еще есть выход? Хотя повторюсь, по условию задачи, этого не требуется. Каждая строка - новая запись и мой код должен отрабатывать. Так все таки, почему наш Валька валяет Ваньку? 1) При запуске программы без параметров список товаров должен остаться неизменным. Эта фигня вроде как выполняется благодаря условию
if(args[0].equals("-c"))
То есть если это условие не выполнится - следовательно аргументов нет и код выполняться не будет, следовательно файл не изменится. На всякий случай подстраховался для эксперимента
if(args.length==0){
           bw.close();
           reader.close();
           reader2.close();
        }
Но по сути этот кусок кода бесполезен, потому что первое условие вполне справляется с задачей. Че тут хочет валидатор от меня?) Ну да это ладно, этот пункт мелочь. 2) Товар должен иметь следующий id, после максимального, найденного в файле. Здесь в дело может вступать указанный мной недостаток, тогда жду советов как это исправить без регулярок. 3) Форматирование новой строки товара должно четко совпадать с указанным в задании. здесь я испробовал 3 варианта и совсем ниче не понял: - делал без пробелов -делал с пробелами в начале параметра -делал с пробелами в конце параметра как показано в примере. Что надо то ему?)