вывод валидатора:
"При запуске программы с параметрами "-u id productName price quantity" должна обновится информация о товаре в файле."
строка с новыми параметрами становится на то же самое место, лишних строк не добавляется, не понимаю :(
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
private static ArrayList<Integer> idList = new ArrayList<>();
private static ArrayList<String> dataList = new ArrayList<>();
private static String fileName;
private static int id;
private static String productName;
private static Double price;
private static int quantity;
public static void main(String[] args) throws IOException {
readFromFile();
if (args.length > 0) {
String key = args[0];
id = Integer.parseInt(args[1]);
if (key.equals("-u")) {
productName = args[2];
price = Double.valueOf(args[3]);
quantity = Integer.parseInt(args[4]);
updateData();
} else if (key.equals("-d")) {
deleteData();
}
}
writeToFile();
}
private static void readFromFile() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
fileName = reader.readLine();
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
String lineFromFile;
String dataFromFile;
int idFromFile;
while (fileReader.ready()) {
lineFromFile = fileReader.readLine();
idFromFile = Integer.parseInt(lineFromFile.substring(0, 8).trim());
dataFromFile = lineFromFile.substring(8);
idList.add(idFromFile);
dataList.add(dataFromFile);
}
fileReader.close();
}
private static void updateData() {
for (int i = 0; i < idList.size(); i++) {
if (idList.get(i) == id) {
String newProductName = String.format("%-30s", productName);
String newPrice = String.format("%-8s", price);
String newQuantity = String.format("%-4s", quantity);
String newData = newProductName + newPrice + newQuantity;
dataList.set(i, newData);
}
}
}
private static void deleteData() {
for (int i = 0; i < idList.size(); i++) {
if (idList.get(i) == id) {
idList.remove(i);
dataList.remove(i);
}
}
}
private static void writeToFile() throws IOException {
BufferedWriter fileWriter = new BufferedWriter(new FileWriter(fileName));
for (int i = 0; i < idList.size(); i++) {
String newID = String.format("%-8s", idList.get(i));
String newData = dataList.get(i);
String newFileLine = newID + newData;
fileWriter.write(newFileLine);
if (i != idList.size() - 1) fileWriter.newLine();
}
fileWriter.close();
}
}