При запуске программы с параметрами "-u id productName price quantity" должна обновится информация о товаре в файле.
Требование задачи не выполнено.
Вот эту часть заменил
int currentId = Integer.parseInt(fileContent.get(i).substring(0, 8));
if(currentId == id){
writer.write(newNote);
}else {
writer.write(fileContent.get(i));
}
на
String currentId = fileContent.get(i).substring(0, 8);
if(currentId.equals(idString)){
writer.write(newNote);
}else {
writer.write(fileContent.get(i));
}
все равно не проходитpackage com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
if(args.length != 0) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
switch (args[0]){
case "-u": updateNoteInFile(fileName, args[1], args[2], args[3], args[4]);
case "-d": deleteFromFileOnId(fileName, args[1]);
}
}
}
private static void updateNoteInFile(String fileName, String idString,
String productName, String price, String quantity) throws IOException {
idString = idString.trim();
productName = productName.trim();
price = price.trim();
quantity = quantity.trim();
int id = Integer.parseInt(idString);
idString = getElementForNote(idString, 8);
productName = getElementForNote(productName, 30);
price = getElementForNote(price, 8);
quantity = getElementForNote(quantity, 4);
String newNote = idString + productName + price + quantity;
ArrayList<String> fileContent = getFileContent(fileName);
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
int size = fileContent.size();
for (int i = 0; i < size; i++) {
int currentId = Integer.parseInt(fileContent.get(i).substring(0, 8));
if(currentId == id){
writer.write(newNote);
}else {
writer.write(fileContent.get(i));
}
writer.newLine();
}
writer.close();
}
private static void deleteFromFileOnId(String fileName, String idString) throws IOException{
idString = getElementForNote(idString, 8);
ArrayList<String> fileContent = getFileContent(fileName);
ArrayList<String> newContent = new ArrayList<String>();
for (int i = 0; i < fileContent.size(); i++) {
String currentId = fileContent.get(i).substring(0, 8);
if(!currentId.equals(idString)){
newContent.add(fileContent.get(i));
}
}
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (int i = 0; i < newContent.size(); i++) {
writer.write(newContent.get(i));
if (i != newContent.size() - 1) {
writer.newLine();
}
}
writer.close();
}
private static ArrayList<String> getFileContent(String fileName) throws IOException{
ArrayList<String> fileContent = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line;
while((line = reader.readLine()) != null){
fileContent.add(line);
}
reader.close();
return fileContent;
}
private static String getElementForNote(String element, int lengthOnNote){
if(element.length() >= lengthOnNote){
element = element.substring(0, lengthOnNote);
} else{
StringBuilder sb = new StringBuilder();
sb.append(element);
while(sb.length() < lengthOnNote){
sb.append(' ');
}
element = sb.toString();
}
return element;
}
}