Есть уверенность что какая-то маленькая деталь которую я упустил. Из-за этого не пропускает валидатор. Хотя проверки проходит успешно.
package com.javarush.task.task18.task1827;
import java.io.*;
import java.nio.Buffer;
import java.util.*;
import java.util.stream.Collectors;
/*
*/
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length != 0) {
ArrayList<Integer> ids = new ArrayList<>();
String file = new Scanner(System.in).nextLine();
BufferedReader bf = new BufferedReader(new FileReader(file));
while (bf.ready()) {
ids.add(Integer.parseInt(bf.readLine().substring(0, 8).trim()));
}
Collections.sort(ids);
int id = ids.get(ids.size() - 1);
String arg = String.join(" ", args);
int len = arg.length() - args[args.length - 1].length() - args[args.length - 2].length() - 3;
String product = arg.substring(3, len).trim();
String price = args[args.length - 2].trim();
String quantity = args[args.length - 1].trim();
String line = "\n" + add(id, product, price, quantity);
System.out.println(line);
FileOutputStream fos = new FileOutputStream(file, true);
fos.write(line.getBytes());
fos.close();
bf.close();
}
}
static String add(int id, String productName, String price, String quantity) {
String id2 = String.format("%-8s", ++id);
if (id2.length() > 8) {
id2 = id2.substring(0, 8);
}
String product = String.format("%-30s", productName);
if (product.length() > 30) {
product = product.substring(0, 30);
}
String price2 = String.format("%-8s", price);
if (price2.length() > 8) {
price2 = price2.substring(0,8);
}
String quan = String.format("%-4s", quantity);
if (quan.length() > 4) {
quan = quan.substring(0,4);
}
return id2 + product + price2 + quan;
}
}