проверил уже как только можно. Решение работает. Валидатор опять ругается не по делу. Помогите, сил нет. Его не устраивает -u и -d
package com.javarush.task.task18.task1828;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws Exception {
String arg = "-u";
String arg1 = "-d";
ArrayList<String> list = new ArrayList<>();
int i;
String line;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String file = bufferedReader.readLine();
FileInputStream fileInputStream = new FileInputStream(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));
while ((line = reader.readLine()) != null) {
list.add(line);
}
if (args.length < 1) { }
else if (args[0].equals(arg)) {
int id = Integer.parseInt(args[1]);
for (i = 0; i<list.size(); i++) {
if (id == (Integer.parseInt(((list.get(i).substring(0,8)).trim())))) {
String[] array = new String[args.length - 4];
int j = 0;
for (int m = 2; m<args.length - 2; m++) {
array[j] = args[m];
j++;
}
String id1 = String.format("%-8s", String.valueOf(Integer.parseInt((list.get(i).substring(0,8)).trim())));
String productName = (String.format("%-30s", String.join(" ", array))).substring(0, 30);
String price = (String.format("%-8s", args[args.length - 2])).substring(0, 8);
String quantity = (String.format("%-4s", args[args.length - 1])).substring(0,4);
String s = id1+productName+price+quantity;
list.set(i, s);
break;
}
}
}
else if (args[0].equals(arg1)) {
int id = Integer.parseInt(args[1]);
for (i = 0; i<list.size(); i++) {
if (id == (Integer.parseInt((list.get(i).substring(0,8)).trim()))){
list.remove(i);
break;
}
}
}
fileInputStream.close();
Files.write(Paths.get(file), list);
bufferedReader.close();
}
}