Integer id = 0, rId;
try {
while (fileReader.ready()) {
rId = Integer.parseInt(fileReader.readLine().substring(0, 8).trim());
System.out.println(rId);
if ( rId > id)
id = rId;
}
} catch (IOException e) { }
Все 3 ID из примера считывает верно (. Но выдает ошибку StringIndexOutOfBoundsException ссылкой на 4-ю строку.
Если 8 заменить на 7, то ошибка не появляется, но теряет 8-й символ из ID.
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 8
at java.lang.String.substring(String.java:1963)
at com.javarush.task.task18.task1827.Solution.getId(Solution.java:4)
package com.javarush.task.task18.task1827;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader fileReader;
FileWriter fileWriter;
String id, file, product = "";
// Чтение названия файла
file = reader.readLine();
reader.close();
fileReader = new BufferedReader(new FileReader(file));
id = new Solution().getId(fileReader);
fileReader.close();
// Получение товара
if (args != null) {
if (args[0].equals("-c")) {
product = new Solution().getProduct(id, args);
}
//Запись товара
fileWriter = new FileWriter(file, true);
fileWriter.write("\n" + product);
fileWriter.close();
}
}
// Получение id
public String getId(BufferedReader fileReader) {
Integer id = 0, rId;
try {
while (fileReader.ready()) {
rId = Integer.parseInt(fileReader.readLine().substring(0, 8).trim());
if ( rId > id)
id = rId;
}
} catch (IOException e) { }
return new Solution().setId(++id);
}
public String setId(Integer id) {
String iD = String.valueOf(id);
if (iD.length() < 8)
for (int i = iD.length(); i < 8; i++)
iD = iD + " ";
return iD;
}
// Формирование товара
public String getProduct(String id, String[] args) {
String productName = args[1], price = args[2], quantity = args[3];
if (productName.length() < 30)
for (int i = productName.length(); i < 30; i++)
productName = productName + " ";
if (price.length() < 8)
for (int i = price.length(); i < 8; i++)
price = price + " ";
if (quantity.length() < 4)
for (int i = quantity.length(); i < 4; i++)
quantity = quantity + " ";
return id + productName + price + quantity;
}
}