Удивило то, что не хочет засчитывать пункт про добавление товара в файл.
Результаты работы программы предоставлены ниже.
Файл до выполнения программы:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
Файл после выполнения программы с параметрами:
-c "Элегантные брюки с перламутровыми пуговицами" 4500.9999 150
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
19847984Элегантные брюки с перламутров4500.999150
Файл после выполнения программы с параметрами:
-c "Элегантные брюки" 450.99 15000
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
19847984Элегантные брюки с перламутров4500.999150
19847985Элегантные брюки 450.99 1500package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length != 4)
return;
if (!args[0].equals("-c"))
return;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
File file = new File(reader.readLine());
reader = new BufferedReader(new FileReader(file));
ArrayList<String> items = new ArrayList<>();
while(reader.ready()){
items.add(reader.readLine());
}
reader.close();
int maxId = getMaxId(items);
String newItem = formatParam(String.valueOf(++maxId), 8) +
formatParam(args[1], 30) +
formatParam(args[2], 8) +
formatParam(args[3], 4);
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
for (String s : items) {
writer.write(s);
writer.newLine();
}
writer.write(newItem);
writer.close();
}
private static int getMaxId(List<String> items) {
int maxId = Integer.parseInt(items.get(0).substring(0, 8).trim());
for (String s : items){
int id = Integer.parseInt(s.substring(0, 8).trim());
maxId = id > maxId ? id : maxId;
}
return maxId;
}
private static String formatParam(String s, int length) {
while (s.length() < length)
s = s.concat(" ");
if (s.length() > length)
s = s.substring(0, length);
return s;
}
}