Валидатор не принимает по двум пунктам
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Locale;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //get filename
String file = br.readLine();
File fileName = new File(file);
br.close();
if (args[1] != null) {
br = new BufferedReader(new FileReader(fileName));
ArrayList<String> list = new ArrayList<>();
String line;
while ((line = br.readLine()) != null) {
String id = line.substring(0, 8).trim();
if (args[1].equals(id) && args[0].equals("-d")) continue;
if (args[1].equals(id) && args[0].equals("-u")) {
line = updateLine(args, line);
}
list.add(line);
}
br.close();
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
for (int i = 0; i < list.size(); i++) {
if (i != 0) bw.newLine();
bw.write(list.get(i));
}
bw.close();
}
}
public static String updateLine(String[] args, String line) {
String id = line.substring(0, 8);
StringBuilder sb = new StringBuilder(); // get productName
for (int i = 2; i < args.length - 2; i++) { sb.append(args[i]).append(" "); }
String productName = String.format("%-30s", sb);
productName = productName.substring(0, Math.min(productName.length(), 30));
// get price
DecimalFormat df = new DecimalFormat("#0.00", DecimalFormatSymbols.getInstance(Locale.US));
double d = Double.parseDouble(args[args.length - 2]);
String price = String.format("%-8s", df.format(d));
price = price.substring(0, Math.min(price.length(), 8));
String quantity = String.format("%-4s", args[args.length - 1]); // get quantity
quantity = quantity.substring(0, Math.min(quantity.length(), 4));
return id + productName + price + quantity;
}
}