Не проходит по условию:
"При запуске программы с параметрами "-c productName price quantity" в конец файла должна добавится новая строка с товаром."
Не могу понять, почему.
Просьба - давать критику и советы именно по этому пункту.
Остальное все верно, не настаиваю на том, что мой вариант самый оптимальный, но он рабочий.
Правильное решение подсмотрено и мне оно понятно, так же как и многие варианты других пользователей, задававших вопросы.
package com.javarush.task.task18.task1827;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length == 0){
return;
}
BufferedReader readerFileName = new BufferedReader(new InputStreamReader(System.in));
String fileName = readerFileName.readLine();
switch (args[0]) {
case "-c":
try (BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
BufferedWriter fileWriter = new BufferedWriter(new FileWriter(fileName))) {
String productName = getCurrentString(30, args[1]);
String price = getCurrentString(8, args[2]);
String quantity = getCurrentString(4, args[3]);
String id = getId(fileReader);
String result = id + productName + price + quantity;
fileWriter.newLine();
fileWriter.write(result);
}
readerFileName.close();
}
}
public static String getCurrentString(int i, String str) throws Exception{
int length = str.length();
StringBuilder stringAndSpace = new StringBuilder();
for (int j = 0; j < i; j++) {
stringAndSpace.append(" ");
}
if (length > i){
return str.substring(0, i);
}
else if(length < i){
stringAndSpace.replace(0, length, str);
return stringAndSpace.toString();
} else {
return str;
}
}
public static String getId(BufferedReader bufferedReader) throws Exception{
List<String> list = new ArrayList<>();
while (bufferedReader.ready()){
list.add((bufferedReader.readLine()).substring(0, 8));
}
int[] ids = new int[list.size()];
int count = 0;
for (String str : list){
str = str.replaceAll(" ", "");
ids[count] = Integer.parseInt(str);
count++;
}
int maxId = 0;
for (int i = 0; i < ids.length; i++) {
if(ids[i] > maxId){
maxId = ids[i];
}
}
String nextId = String.valueOf(maxId + 1);
nextId = getCurrentString(8, nextId);
return nextId;
}
}