Программа делает все, что требуется в условии, но все равно валидатор ее не принимает.
Посмотрите пожалуйста и ткните носом в ошибку. Заранее большое спасибо!
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws Exception {
if(args.length!=0){
//Тут читаем имя файла и формируем список из строк файла.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
File file = new File(reader.readLine());
ArrayList<String> strings = getStrings(file);
//Ищем нужную строку по id.
String value = null;
if(!strings.isEmpty()){
for(String s:strings){
int id = Integer.parseInt(args[1]);
if(getIntegerId(s)==id){
value = s;
break;
}
}
}
//Если первый аргумент "-u" то заменяем в списке старую строку на новую.
if(args[0].equals("-u")){
int index;
String newValue = stringFormer(args[1],args[2],args[3],args[4]);
if(value!=null){
index = strings.indexOf(value);
strings.set(index, newValue);
}
}
//Если первый аргумент "-d" то удаляем строку из списка.
if(args[0].equals("-d")){
if(value != null){
strings.remove(value);
}
}
//Перезаписываем файл измененными данными
BufferedWriter output = new BufferedWriter(new FileWriter(file));
for(String s:strings){
output.write(s);
output.newLine();
}
output.close();
}
}
//Преобразует файл в список строк.
private static ArrayList<String> getStrings(File file) throws IOException{
BufferedReader input = new BufferedReader(new FileReader(file));
ArrayList<String> strings = new ArrayList<>();
while(true){
String current = input.readLine();
if(current==null||current.equals(""))break;
strings.add(current);
}
input.close();
return strings;
}
//Получает числовое значение id из переданной в аргументы строки.
private static int getIntegerId(String s){
String buff = s.substring(0,8).trim();
return Integer.parseInt(buff);
}
//Форматирует строку в соответствии с данными в условии правилами.
private static String stringFormer(String id, String product, String price, String quantity){
id=String.format("%-8s", id);
product=String.format("%-30s", product);
price = String.format("%-8s", price);
quantity =String.format("%-4s", quantity);
return id+product+price+quantity;
}
}