Добрый день.
Почему валидатор может не принимать ответ? Сначала написал решение с вложенным классом для парсинга строк из файла, валидатор не принял, почитал комментарии, переписал без вложенного класса. Всё по-прежнему работает))) или может я неправильно тестирую?
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 {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
ArrayList<String> listProduct = new ArrayList();
BufferedReader sc = new BufferedReader(new FileReader(fileName));
while(sc.ready()) {
listProduct.add(sc.readLine());
}
sc.close();
String productName = "";
String price = "";
String quantity = "";
String id = "";
// if (args.length != 0 && args[0].equals("-c")) {
if (args.length != 0) {
id = String.format("%-8s", args[0]);
ArrayList<String> listProductCopy = listProduct;
for (int i = 0; i < listProductCopy.size(); i++) {
String s = listProductCopy.get(i);
if(s.substring(0,8).trim().equals(id.trim())) {
switch (args[0]) {
case("-u"):
productName = String.format("%-30.30s", args[2].replaceAll("_"," "));
price = String.format("%-8.2f", Double.parseDouble(args[3]));
quantity = String.format("%-4d", Integer.parseInt(args[4]));
s = s.replace(s.substring(8,38),productName);
s = s.replace(s.substring(38,46),price);
s = s.replace(s.substring(46,50),quantity);
listProduct.set(i,s);
break;
case("-d"):
listProduct.remove(i);
break;
}
}
}
}
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileName));
for (int i = 0; i < listProduct.size(); i++) {
if(i == 0) bufferedWriter.write(listProduct.get(i));
else {
bufferedWriter.newLine();
bufferedWriter.write(listProduct.get(i));
}
}
bufferedWriter.close();
}
}