Все мои тесты проходит. Валидатор ругается на неудаление строки((
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String fileName = bufferedReader.readLine();
bufferedReader.close();
if (args.length !=0){
switch (args[0]){
case ("-u"):
updateId(args[1], args[2], args[3], args[4], fileName);
break;
case ("-d"):
deleteId(args[1], fileName);
break;
}
}
}
static void updateId(String id, String productName, String price, String quantity, String filename){
ArrayList<String> listID = readFileToList(filename);
String idParam = id.length() > 8 ? id.substring(0,8) : id;
String prodName = productName.length() > 30 ? productName.substring(0,30) : productName;
String prc = price.length() > 8 ? price.substring(0,8) : price;
String qnt = quantity.length() > 4 ? quantity.substring(0,4) : quantity;
String toUpdate = String.format("%-8s%-30s%-8s%-4s", idParam, prodName, prc, qnt);
for (int i = 0; i <listID.size() ; i++) {
if (Integer.valueOf(idParam).equals(Integer.valueOf(listID.get(i).substring(0,8).trim()))){
listID.remove(i);
listID.add(i, toUpdate);
}
}
writeListToFile(listID, filename);
}
static void deleteId(String id, String filename){
ArrayList<String> listID = readFileToList(filename);
//String idParam = id.length() > 8 ? id.substring(0,8) : id;
for (int i = 0; i <listID.size() ; i++) {
if (Integer.valueOf(id).equals(Integer.valueOf(listID.get(i).substring(0,8).trim()))){
listID.remove(i);
}
writeListToFile(listID,filename);
}
}
static ArrayList<String> readFileToList(String filename){
ArrayList<String> listID = new ArrayList<>();
String line = null;
try {
BufferedReader fileReader = new BufferedReader(new FileReader(filename));
while ((line = fileReader.readLine()) != null) {
listID.add(line);
}
fileReader.close();
} catch (IOException e){
e.printStackTrace();
}
return listID;
}
static void writeListToFile(ArrayList<String> listID, String filename){
try {
BufferedWriter fileWriter = new BufferedWriter(new FileWriter(filename, false));
for (String lineId: listID) {
fileWriter.write(lineId);
fileWriter.newLine();
}
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}