Идея решения взята из комментариев в обсуждении и из вопроса ниже, но валидатор по 4 и 6 пункту не принимает.
Хотя запись в файл на мой взгляд корректная. Коллеги, подскажите где проблема?
package com.javarush.task.task18.task1827;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws Exception {
args = new String[]{"-c", "Шорты пляжные черные с рисунком и полосками", "159", "12345"};
String fileName;
int max = Integer.MIN_VALUE;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter file name");
fileName = reader.readLine();
File file = new File(fileName);
BufferedReader fr = new BufferedReader(new FileReader(fileName));
if (args.length == 0) return;
while (fr.ready()) {
String s = fr.readLine();
int id = Integer.parseInt(s.substring(0, 8).trim());
//System.out.println(id);
if (max < id) {
max = id;
}
//System.out.println(max);
}
FileWriter writer = new FileWriter(file, true);
StringBuilder sbString = new StringBuilder();
String id = String.format("%-8d", max + 1).substring(0,8);
String productName = String.format("%-30s", args[1]).substring(0,30);
String price = String.format("%-8.2f", Float.parseFloat(args[2])).substring(0,8);
String quantity = String.format("%-4d", Integer.parseInt(args[3])).substring(0,4);
switch (args[0]) {
case ("-c"):
sbString.append("\n").append(id).append(productName).append(price).append(quantity);
//System.out.println(sbString);
writer.write(sbString.toString());
}
fr.close();
writer.close();
}
}
//d:/Стажировка JAVA/Tasks Head First/src/1.txt