Привет друзья. В общем, бодаюсь с валидатором, как обычно. Решение работает, на своих файлах протестировал, с длиной строки всё ок, пишется в ту же строку, но валидатор это всё почему-то не пропускает, подскажите, может я что-то упустил?
P.S. В "рекомендации от ментора" следующее: "Товар с измененными данными должен находится на той же строке в файле."
package com.javarush.task.task18.task1828;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
/*
Прайсы 2
*/
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length > 0) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String path = bufferedReader.readLine(); //считал путь с клавиатуры
bufferedReader = new BufferedReader(new FileReader(path)); //поток чтения из файла в буффер
List<String> list = new ArrayList<>(); //добавил всё прочитанное в список построчно
while (bufferedReader.ready()) {
list.add(bufferedReader.readLine());
}
if (args[0].equals("-u")) {
int indexToUpd = 0;
boolean isFound = false;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).startsWith(args[1])) {
indexToUpd = i;
isFound = true;
break;
}
}
if (isFound) {
String newID = correctLength(args[1], 8);
String newName = correctLength(args[2], 30);
String newPrice = correctLength(args[3], 8);
String newQuantity = correctLength(args[4], 4);
String result = newID + newName + newPrice + newQuantity;
list.set(indexToUpd, result);
}
} else if (args[0].equals("-d")) {
int indexToDel = 0;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).startsWith(args[1])) {
indexToDel = i;
break;
}
}
list.remove(indexToDel);
}
FileWriter fw = new FileWriter(path);
for (String str : list) fw.write(str + "\n");
fw.close();
bufferedReader.close();
}
}
// метод для форматирования длины аргумента
static String correctLength(String str, int strLength) {
String result = str;
if (result.length() < strLength)
while (result.length() < strLength) result += " ";
else if (result.length() > strLength) result = result.substring(0, strLength);
return result;
}
}