Здравствуйте, написав задачу Прайсы, я, как обычно, полез в коментариии за уточнением вещей, которые не до конца раскрыты в условии, ну и еще чтобы найти более элегантное решение (мое текущее решение в 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);