Доброго дня. Вроде код верный, но валидатор не пропускает по предпоследнему и 4 пунктам. Что не так?
UPDATE:
Задачу я всё таки решил). Оказалось метод FileWriter write(), не добавляет новые данные в конец, а стирает старые и уже после добавляет нужную строку. Однако вопрос к самой задачи у меня все же остался:
1. ID. Тут внизу коллега Гершман пояснил мне, что id может быть > 8. Каким образом? Все данные в файл были добавлены с помощью программы, которую нам и нужно написать в качестве решения. А id мы достаем с помощью
String str = reader.readLine().substring(0, 8).trim();
Т.е мы обрезаем лишние пробелы, чтобы после парсить строку в Integer. Ну а после добавляем это увеличенное значение в файл. Так как id может быть больше 8? Единственную ситуацию с id > 8, которую я смог представить, это если максимальное id найденное в файле = 99 999 999. Мы инкрементируем его и получаем 100 000 000. Но если мы его обрежем, то случится коллизия.
Вообщем кому не лень, поясните пожалуйста данный момент.package com.javarush.task.task18.task1827;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.io.*;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws IOException {
if (args.length != 0) {
BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
//FileOperator op = new FileOperator();
String path = rd.readLine();
String prName = args[1];
String price = args[2];
String quant = args[3];
rd.close();
if (args[0].equals("-c"))
try (BufferedReader reader = new BufferedReader(new FileReader(path));
FileWriter output = new FileWriter(path)) {
int maxId = 0;
while (reader.ready()) {
String str = reader.readLine().substring(0, 8).trim();
if (Integer.parseInt(str) > maxId) {
maxId = Integer.parseInt(str);
}
}
maxId++;
String prId = Integer.toString(maxId);
if (prId.length() < 8) {
for (int i = 0; i < (8 - prId.length()); i++ )
prId += " ";
}
String resultStr = "\n" + prId + prName + price + quant;
output.write(resultStr);
} catch (FileNotFoundException e) {
System.out.println("The file hasn't found");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}