Нужна помощь, я не понимаю, что не нравится валидптору...
Код рабочий, ID определяет правильно, записывает 50 символов, но что не так я не понимаю.
package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length == 0)
return;
if((!"-c".equals(args[0])) || (args.length < 4))
return;
// читаем имя файла
String fileName;
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
fileName = br.readLine();
}
File file = new File(fileName);
// находим МАКС ИД
int maxID = 0;
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(file))) {
while (bufferedReader.ready()){
String position = bufferedReader.readLine();
int id = Integer.parseInt(position.substring(0, 7).trim());
if (maxID < id)
maxID = id;
}
}
// форматируем полученные аргкменты для записи
String strID_8, productName_30, price_8, quantity_4, resultStr;
strID_8 = stringSized(String.valueOf(++maxID), 8);
productName_30 = stringSized(getProductName(args), 30);
price_8 = stringSized(args[args.length - 2], 8);
quantity_4 = stringSized(args[args.length - 1], 4);
// создаем строку для записи
resultStr = new StringBuilder()
.append(strID_8)
.append(productName_30)
.append(price_8)
.append(quantity_4)
.toString();
// записываем в файл
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file, true))){
bw.newLine();
bw.write(resultStr);
}
}
// выравнивание строки по заданному размеру
private static String stringSized (String in, int amountChar) {
String out;
int inLenght = in.length();
int difference = amountChar - inLenght;
if (difference > 0) {
String tmp = "";
for (int i = 0; i < difference; i++) {
tmp = tmp + " ";
}
out = in + tmp;
} else if (difference < 0)
out = in.substring(0, amountChar);
else
out = in;
return out;
}
// формирование имени продукта дя записи
private static String getProductName(String[] args) {
String res = "";
for (int i = 1; i < args.length-2; i++)
res = res + args[i] + " ";
return res;
}
}
