Добрый день!
Может кто-нибудь подсказать почему у меня в строчках 33 и 50 всегда false? Проверяю дебагером, показывает идентичные значения, но всё равно false и, соответственно, нужное мне удаление или обновление не происходит :((((
Не знаю как, но не меняя кода, а поперезаписовав исходный файл, заработало удаление из списка. НО, проблема в 50 строке осталась, хотя она и идентична 33.
И самое ужасное, что Валидатор вообще не может скомпилировать мой код и где-то виснит. Я пробовал запускать с обоими аргументами и вообще без - программа компилировалась до конца, а Валли нашёл как зависнуть :(
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) {return;}
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
ArrayList<String> list = new ArrayList<>();
while(true) {
String str = fileReader.readLine();
if (str==null) {break;}
else {
list.add(str);
}
}
fileReader.close();
if(args[0].equals("-d")) {
for(int i=0; i<list.size(); i++) {
String[] id = list.get(i).substring(0, 8).split(" ");
for (String s: id) {
System.out.println(s);
}
if(args[1].equals(id[0])) {
list.remove(i);
System.out.println(list.get(i));
}
}
}
if(args[0].equals("-u")) {
String elemId = String.format("%-8s", args[1]);
String productname = String.format("%-30s", args[2]);
String price = String.format("%-8s", args[3]);
String quantity = String.format("%-4s", args[4]);
StringBuilder sb = new StringBuilder();
sb.append(elemId).append(productname).append(price).append(quantity);
for(int i=0; i<list.size(); i++) {
String[] id = list.get(i).substring(0, 8).split(" ");
if(args[1].equals(id[0])) {
list.add(i, sb.toString());
}
}
}
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (String str : list) {
writer.write(str+"\n");
}
writer.close();
}
}