Тестирую у себя локально, все работает.
Но валидатор со мной не согласен.
package com.javarush.task.task18.task1827;
import java.awt.image.AreaAveragingScaleFilter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws Exception {
args = new String[]{"-c", "Шорты пляжные синие", "172.00", "17"};
class LogItem {
Integer id;
String productName;
String price;
String quantity;
public LogItem(Integer id, String productName, String price, String quantity) {
if(String.valueOf(id).length() > 8){
String stringId = String.valueOf(id).substring(0,8);
id = Integer.valueOf(stringId);
}
if (productName.length() > 30){
productName = productName.substring(0,30);
}
if (price.length() > 8){
price = price.substring(0,8);
}
if (quantity.length() > 4) {
quantity = quantity.substring(0,4);
}
this.id = id;
this.productName = productName;
this.price = price;
this.quantity = quantity;
}
@Override
public String toString() {
return String.format("%-8d%-30s%-8s%-4s", id, productName, price, quantity);
}
}
BufferedReader reader = null;
FileReader fileReader = null;
FileWriter fileWriter = null;
BufferedReader lineReader = null;
ArrayList<LogItem> log = new ArrayList<>();
try {
reader = new BufferedReader(new InputStreamReader(System.in));
String sourceFile = reader.readLine();
fileReader = new FileReader(sourceFile);
fileWriter = new FileWriter(sourceFile, true);
lineReader = new BufferedReader(fileReader);
while (lineReader.ready()) {
String temp = lineReader.readLine();
Integer tempId = Integer.valueOf(temp.substring(0,8).trim());
String tempProductName = temp.substring(8,38);
String tempPrice = temp.substring(38,46).trim();
String tempQuantity = temp.substring(46).trim();
log.add(new LogItem(tempId, tempProductName, tempPrice, tempQuantity));
}
if (args.length != 0) {
if (args[0].equals("-c")) {
Integer newId = 0;
for (LogItem item : log) {
if (item.id > newId) {
newId = item.id;
}
}
newId++;
log.add(new LogItem(newId, args[1], args[2], args[3]));
fileWriter.write("\n");
fileWriter.write(log.get(log.size() - 1).toString());
}
}
} finally {
reader.close();
fileWriter.close();
fileReader.close();
lineReader.close();
}
}
}