Ну я не знаю почему компайл ругается на метод repeat, хотя в idea на компе все прекрасно работает
Конечно возможно метод не самый изящный с мапой, но мне показалось так легче всего будет обновлять уже существуюший товар по id
package com.javarush.task.task18.task1828;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
/*
Прайсы 2
*/
public class Solution {
public static void main(String[] args) {
test(args);
}
public static void test(String[] args){
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){
String fileName = reader.readLine();
Map<String,String> map = new HashMap<>();
try(BufferedReader input = new BufferedReader(new FileReader(fileName))) {
String str = input.readLine();
while(str != null){
map.put(str.substring(0,8), str.substring(8));
str = input.readLine();
}
} catch (IOException io){
io.printStackTrace();
}
try(BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))){
int id;
String idName;
switch(args[0]){
case "-c":
id = Integer.parseInt(args[1]);
idName = getStringFromId(id);
String name = args[2] + " ".repeat(30 - args[2].length());
String price = args[3] + " ".repeat(8 - args[3].length());
String quantity = args[4] + " ".repeat(4 - args[4].length());
map.put(idName, name + price + quantity);
break;
case "-d":
id = Integer.parseInt(args[1]);
idName = getStringFromId(id);
map.remove(idName);
break;
}
for(Map.Entry<String, String> entry : map.entrySet()){
writer.write(entry.getKey() + entry.getValue() + "\n");
}
} catch (IOException io){
io.printStackTrace();
}
} catch (IOException e){
e.printStackTrace();
}
}
public static int getIdFromString(String idName){
int id;
try{
id = Integer.parseInt(idName.substring(0,idName.indexOf(' ')));
} catch (Exception e) {
id = Integer.parseInt(idName);
}
return id;
}
public static String getStringFromId(int id){
String idName;
idName = String.valueOf(id);
idName += " ".repeat(8 - idName.length());
return idName;
}
}