Друзья, помогите пожалуйста разобратся почему не прохожу по 4 пункту, программа работает корректно, вывод в файл(пустой и с существующими данными) соответствует условию, тестировал много раз.
P.S. после просмотра раздела помощь осознал что мой код еще то 🤢, так как можно было бы написать универсальный метод для форматировки каждой позиции вместо этого полотна, но хочу понять сначала в чем проблема и тогда уже перепишу 😀
package com.javarush.task.task18.task1827;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.stream.Collectors;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
String fileName = consoleReader.readLine();
FileReader fileToRead = new FileReader(fileName);
FileWriter fileToWrite = new FileWriter(fileName, true);
if (!(args.length == 0)) {
Integer maxId = 0;
try {
ArrayList<String> existingLines = new ArrayList<>();
BufferedReader fileReader = new BufferedReader(fileToRead);
if (fileReader.ready()) {
while (fileReader.ready()) {
existingLines.add(fileReader.readLine());
}
maxId = existingLines.stream().map(s -> Integer.parseInt(s.substring(0, 8).trim())).collect(Collectors.toList()).stream()
.mapToInt(v -> v)
.max().orElseThrow(NoSuchElementException::new);
maxId++;
}
} catch (NoSuchElementException e) {
maxId = 1;
}
if (args[0].equals("-c")) {
String itemName;
if (args[1].length() > 30) {
itemName = args[1].substring(0, 31);
} else {
StringBuilder sbitem = new StringBuilder();
sbitem.append(args[1]);
while (sbitem.length() < 30) {
sbitem.append(" ");
}
itemName = sbitem.toString();
}
String price;
if (args[2].length() > 8) {
price = args[2].substring(0, 9);
} else {
StringBuilder sbprice = new StringBuilder();
sbprice.append(args[2]);
while (sbprice.length() < 8) {
sbprice.append(" ");
}
price = sbprice.toString();
}
String quantity;
if (args[3].length() > 4) {
quantity = args[3].substring(0, 4);
} else {
StringBuilder sbq = new StringBuilder();
sbq.append(args[3]);
while (sbq.length() < 4) {
sbq.append(" ");
}
quantity = sbq.toString();
}
Integer idint = maxId++;
String id = idint.toString();
if (id.length() < 8) {
StringBuilder sbi = new StringBuilder();
sbi.append(id);
while (sbi.length() < 8) {
sbi.append(" ");
}
id = sbi.toString();;
}
StringBuilder resultLine = new StringBuilder();
resultLine.append(id);
resultLine.append(itemName);
resultLine.append(price);
resultLine.append(quantity);
resultLine.append("\n");
String readyLine = resultLine.toString();
BufferedWriter writer = new BufferedWriter(fileToWrite);
writer.write(readyLine);
writer.close();
}
consoleReader.close();
fileToRead.close();
fileToWrite.close();
}
}
}