Добрый вечер.
Товар имеет следующий после максимального id.
Форматирование новой строки совпадает.
Что не так? Подскажите, пожалуйста.
package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public static void main(String[] args) throws IOException {
if (!args[0].equals(" ")) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> lines = new ArrayList<>();
String fileName = reader.readLine();
reader.close();
BufferedReader linesReader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
while (linesReader.ready()) {
lines.add(linesReader.readLine());
}
linesReader.close();
StringBuilder sb = new StringBuilder();
sb.append(getId(lines)).append(getProductName(args[1])).append(getPrice(args[2])).append(getQuantity(args[3]));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName)));
for (int i = 0; i < lines.size(); i++) {
writer.write(lines.get(i));
writer.newLine();
if (i == lines.size() - 1) {
writer.write(sb.toString());
writer.close();
}
}
} else {
}
}
public static String getId(ArrayList<String> list) {
ArrayList<Integer> ids = new ArrayList<>();
int id;
for (int i = 0; i < list.size(); i++) {
char[] id8 = list.get(i).substring(0, 7).toCharArray();
StringBuilder sb = new StringBuilder();
for (int j = 0; j < id8.length; j++) {
if (id8[j] != ' ') sb.append(id8[j]);
}
ids.add(Integer.valueOf(sb.toString()));
}
id = Collections.max(ids);
id++;
StringBuilder finalId = new StringBuilder();
finalId.append(id);
for (int i = String.valueOf(id).length(); i < 8; i++) {
finalId.append(' ');
}
return finalId.toString();
}
public static String getProductName(String argument) {
char[] productName = new char[30];
char[] initialProduct = argument.toCharArray();
for (int i = 0; i < productName.length; i++) {
try {
productName[i] = initialProduct[i];
} catch (IndexOutOfBoundsException e) {
productName[i] = ' ';
}
}
return new String(productName);
}
public static String getPrice(String argument) {
char[] price = new char[8];
char[] initialPrice = argument.toCharArray();
for (int i = 0; i < price.length; i++) {
try {
price[i] = initialPrice[i];
} catch (IndexOutOfBoundsException e) {
price[i] = ' ';
}
}
return new String(price);
}
public static String getQuantity(String argument) {
char[] quantity = new char[4];
char[] initialQuantity = argument.toCharArray();
for (int i = 0; i < quantity.length; i++) {
try {
quantity[i] = initialQuantity[i];
} catch (IndexOutOfBoundsException e) {
quantity[i] = ' ';
}
}
return new String(quantity);
}
}