Потестил программу, почитал комментарии, дополнил в соответствии с ними, но валидатору всё равно не нравится. Подскажите пожалуйста, что сделать? Смущает меня то, как приходится обрезать id, но что с обрезанием, что без, задача не принимается
package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
if (args[0].equals("-c")) {
create(fileName, args[1], args[2], args[3]);
}
}
public static void create(String fileName, String productName, String price, String quantity) throws IOException {
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
ArrayList<Integer> list = new ArrayList<Integer>();
//Separating idecies from read lines
while(fileReader.ready()) {
String product = fileReader.readLine();
String id = product.substring(0, (product.indexOf(' ') < 8 ? product.indexOf(' ') : 8));
list.add(Integer.parseInt(id));
}
fileReader.close();
int maxId = Collections.max(list);
String id = String.valueOf(++maxId);
String out = format(id, 8) + format(productName, 30) + format(price, 8) + format(quantity, 4);
FileInputStream check = new FileInputStream(fileName);
boolean isEnter = false;
while (check.available() > 0) {
int buffer = check.read();
if (check.available() == 1 && buffer == System.lineSeparator().getBytes()[0] && check.read() == System.lineSeparator().getBytes()[1]) {
isEnter = true;
}
}
FileWriter output = new FileWriter(fileName, true);
if (!isEnter) {
output.append(System.lineSeparator());
}
output.append(out);
output.close();
}
public static String format (String get, int number) {
if (get.length() > number) {
get = get.substring(0, number);
}
StringBuilder result = new StringBuilder();
result.append(get);
for (int i = get.length(); i < number; i++) {
result.append(" ");
}
return result.toString();
}
}