Здравствуйте. Задача не является решённой по пунктам 3 и 4. Тестировал с обоими наборами параметров - в файле всё нормально обновляется и удаляется. Что валидатор тут считает неправильным? Может, есть какой-то набор параметров, который тут не проходит. Заранее спасибо.
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
if (args.length > 0) {
BufferedReader fileIn = new BufferedReader(new FileReader(fileName));
//BufferedReader fileIn = new BufferedReader(new FileReader("F:\\JAVA\\Files\\IOEx\\file3.txt"));
// Ищем максимальный id
char[] idCh = new char[]{' ',' ',' ',' ',' ',' ',' ',' '};
String s;
int id = 0;
while ((s = fileIn.readLine()) != null) {
int j = 1;
// System.out.println(j + ")" + s);
// System.out.println(s.length());
// for (int i = 0; i < s.length(); i++) {
// System.out.println("["+i+"] " + s.charAt(i));
// }
// System.out.println();
char[] mas = new char[8];
for (int i = 0; i < mas.length; i++) {
mas[i] = s.charAt(i);
//System.out.println("["+i+"] " + mas[i]);
}
String str = "";
for (int i = 0; i < mas.length; i++) {
if (mas[i] != ' ')
str += mas[i];
}
//System.out.println("str = " + str);
int idInt = Integer.parseInt(str);
//System.out.println("idInt = " + idInt);
if (idInt > id)
id = idInt;
//System.out.println("id = " + id);
}
id = id + 1; // Конечный нужный id
//System.out.println("idNew = " + id);
String idS = Integer.toString(id);
//System.out.println("idS = " + idS);
for (int i = 0; i < idS.length(); i++) {
idCh[i] = idS.charAt(i);
}
// for (int i = 0; i < idCh.length; i++) {
// System.out.println("idCh["+i+"] " + idCh[i]);
// }
// Имя продукта и цена
double priceD;
String nameS = args[1];
int countArgs = 2;
while (true) {
try {
double d = Double.parseDouble(args[countArgs]);
priceD = d;
countArgs++;
break;
} catch (NumberFormatException e) {
nameS += " " + args[countArgs];
countArgs++;
}
}
// Получили буфер с именем продукта
char[] productName = new char[30];
for (int i = 0; i < 30; i++) {
productName[i] = ' ';
}
for (int i = 0; i < nameS.length(); i++) {
productName[i] = nameS.charAt(i);
}
// Получили буфер с ценой
char[] price = new char[]{' ',' ',' ',' ',' ',' ',' ',' '};
String priceS = Double.toString(priceD);
for (int i = 0; i < priceS.length(); i++) {
price[i] = priceS.charAt(i);
}
// Получаем качество
char[] quantity = new char[]{' ',' ',' ',' '};
String quantytyS = args[countArgs];
for (int i = 0; i < quantytyS.length(); i++) {
quantity[i] = quantytyS.charAt(i);
}
// Получаем конечный буфер с данными
char[] buffer = new char[50];
for (int i = 0; i < 8; i++) {
buffer[i] = idCh[i];
}
for (int i = 8, j = 0; j < 30; i++, j++) {
buffer[i] = productName[j];
}
for (int i = 38, j = 0; j < 8; i++, j++) {
buffer[i] = price[j];
}
for (int i = 46, j = 0; j < 4; i++, j++) {
buffer[i] = quantity[j];
}
BufferedWriter fileOut = new BufferedWriter(new FileWriter(fileName,true));
//BufferedWriter fileOut = new BufferedWriter(new FileWriter("F:\\JAVA\\Files\\IOEx\\file3.txt",true));
fileOut.write('\r');
fileOut.write('\n');
fileOut.write(buffer);
fileIn.close();
fileOut.close();
}
reader.close();
}
}