Помогите, пожалуйста.
Претензия валидатора: "При запуске программы с параметрами "-c productName price quantity" в конец файла должна добавится новая строка с товаром."
Очень странно, т.к. тестировала, несколько раз запускала, работает, строка четко дописывается в конец имеющегося файла. Форматирование строки соблюдается, данные всегда вносятся в конец имеющегося. Пример работы:
текст в файле до работы:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
после прогона программы несколько раз:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
19847984платье зеленое длинное 345.00 67
19847985платье зеленое длинное 345.00 67
19847986платье зеленое длинное 345.00 67
19847987сарафан в цветочек розовый 1234.89 56
Возможно, это вопрос уже к тем, кто составляет условия и поддерживает программу валидатора.
package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader rFileName = new BufferedReader(new InputStreamReader(System.in));
String fileName = rFileName.readLine();
rFileName.close();
if(args.length != 0){
String key = args[0];
String quantity = args[args.length-1];
String price = args[args.length -2];
String productName = args[1];
if(args.length>4){
for (int i =2; i < args.length-2 ; i++) {
productName = productName.concat(" "+ args[i]);
}
}
if(key.equals("-c")){
Scanner readFile = new Scanner(new FileReader(fileName));
BufferedWriter writeFile = new BufferedWriter(new FileWriter(fileName,true));
String finish;
//1. вычисляем id = максимальный id в файле +1:
ArrayList<String> cont = new ArrayList<>();
int idMax = 0;
while (readFile.hasNextLine()){
String t = readFile.nextLine();
cont.add(t);
int id = Integer.parseInt(t.substring(0,8).replaceAll(" ",""));
if(idMax<id){idMax = id;}
}
idMax++;
// Собираем строку для записи:
finish = String.format("%-8d",idMax);
if(productName.length()<=30){
finish = finish.concat(String.format("%-30s",productName));
}
else finish = finish.concat(String.format("%.30s",productName));
if (price.length()<=8){
finish = finish.concat(String.format("%-8s", price));
}
else finish = finish.concat(String.format("%.8s",price));
if (quantity.length()<=4){
finish = finish.concat(String.format("%-4s",quantity));
}
else finish = finish.concat(String.format("%.4s",quantity));
cont.add(finish);
// Finish!!!
writeFile.write(finish);
writeFile.newLine();
readFile.close();
writeFile.close();
}}
}
}