Пробовал уже и через format и в ручную добавляя пробелы.
файлик открывает, берет самый крайний индекс и добавляет 1. тестировал на разных числах. В упор не вижу ошибку. Второй день борюсь с валидатором. мозг сломал уже. Может кто сказать в чем ошибка? не ужели правильный путь только создавать объект и работать с ним как в "Правильном решении?"
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 {
if (args.length == 0) {
return;
}
if (args[0].equals( "-c" )) {
String path = null;
// String path = "C:\\test\\crud.txt";
String name = null;
String price = null;
String quantity;
ArrayList<String> fileData = new ArrayList<>();
int lastindex;
// get file name
try (BufferedReader bufferedReader = new BufferedReader( new InputStreamReader( System.in ) )) {
path = bufferedReader.readLine();
}
try (FileReader fr = new FileReader( path );
BufferedReader bufferedReaderFile = new BufferedReader( fr )
) {
while (bufferedReaderFile.ready()) {
fileData.add( bufferedReaderFile.readLine() );
}
}
//get index
int max = 0;
for (int i = 0; i < fileData.size(); i++) {
String thisLine = fileData.get( i );
try {
int indexLine = Integer.parseInt( thisLine.substring( 0, 7 ).replace( " ", "" ) );
if (indexLine > max) {
max = indexLine;
}
} catch (NumberFormatException e) {
}
}
//String indexStr = addSpice( new StringBuffer().append( max + 1 ), 8 );
//get name
StringBuffer nameBuffer = new StringBuffer();
for (int i = 1; i < args.length - 2; i++) {
nameBuffer.append( args[i] + " " );
}
// name = addSpice( nameBuffer, 30 );
StringBuffer priceBuffer = new StringBuffer( args[args.length - 2] );
//price = addSpice( priceBuffer, 8 );
StringBuffer bufferQuantity = new StringBuffer( args[args.length - 1] );
quantity = addSpice( bufferQuantity, 4 );
try (FileWriter fw = new FileWriter( path, true )) {
fw.write( String.format( "\n%-8.8s%-30.30s%-8.8s%-4.4s",max+1, nameBuffer, priceBuffer,quantity ));
}
}
}
public static String addSpice(StringBuffer buf,int toMax){
String result = "";
while (buf.length() < toMax){
buf.append( " " );
}
result = buf.length() == toMax? buf.toString():buf.toString().substring( 0,toMax - 1);
return result;
}
}