Прайсы 2
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается с одним из следующих наборов параметров:
-u id productName price quantity
-d id
Значения параметров:
где id — 8 символов
productName — название товара, 30 chars (60 bytes)
price — цена, 8 символов
quantity — количество, 4 символа
-u — обновляет данные товара с заданным id
-d — производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)
В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины
Пример:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
Требования:
1. Программа должна считать имя файла для операций CrUD с консоли.
2. При запуске программы без параметров список товаров должен остаться неизменным.
3. При запуске программы с параметрами "-u id productName price quantity" должна обновится информация о товаре в файле.
4. При запуске программы с параметрами "-d id" строка товара с заданным id должна быть удалена из файла.
5. Созданные для файлов потоки должны быть закрыты.
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
ArrayList<String> list = new ArrayList<String>();
BufferedReader reader1 = new BufferedReader(new FileReader(fileName));
while (reader1.ready()) {
list.add(reader1.readLine());
}
reader1.close();
if (args[0].equals("-u")) {
String arg1 = args[1].length() > 8 ? args[1].substring(0, 8) : args[1];
String arg2 = args[2].length() > 30 ? args[2].substring(0, 30) : args[2];
String arg3 = args[3].length() > 8 ? args[3].substring(0, 8) : args[3];
String arg4 = args[4].length() > 4 ? args[4].substring(0, 4) : args[4];
int num = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).substring(0, 8).contains(arg1)) num = i;
}
String ss = String.format("%-8s%-30s%-8s%-4s", arg1, arg2, arg3, arg4);
list.set(num, ss);
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (int i = 0; i < list.size(); i++) {
writer.write(list.get(i));
if ((i < list.size() - 1)) writer.newLine();
}
writer.close();
}
if (args[0].equals("-d")) {
String arg1 = args[1].length() > 8 ? args[1].substring(0, 8) : args[1];
int num = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).substring(0, 8).contains(arg1)) num = i;
}
list.remove(num);
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (int i = 0; i < list.size(); i++) {
writer.write(list.get(i));
if ((i < list.size() - 1)) writer.newLine();
}
writer.close();
}
}
}
Не понимаю, всё работает, но не проходит по 3му пункту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 {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
ArrayList<String> list = new ArrayList<String>();
BufferedReader reader1 = new BufferedReader(new FileReader(fileName));
while (reader1.ready()) {
list.add(reader1.readLine());
}
reader1.close();
if (args[0].equals("-u")) {
String arg1 = args[1].length() > 8 ? args[1].substring(0, 8) : args[1];
String arg2 = args[2].length() > 30 ? args[2].substring(0, 30) : args[2];
String arg3 = args[3].length() > 8 ? args[3].substring(0, 8) : args[3];
String arg4 = args[4].length() > 4 ? args[4].substring(0, 4) : args[4];
int num = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).startsWith(args[1])) num = i;
}
String ss = String.format("%-8s%-30s%-8s%-4s", arg1, arg2, arg3, arg4);
list.set(num, ss);
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (int i = 0; i < list.size(); i++) {
writer.write(list.get(i));
if ((i < list.size() - 1)) writer.newLine();
}
writer.close();
}
if (args[0].equals("-d")) {
String arg1 = args[1].length() > 8 ? args[1].substring(0, 8) : args[1];
int num = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).substring(0, 8).contains(arg1)) num = i;
}
list.remove(num);
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (int i = 0; i < list.size(); i++) {
writer.write(list.get(i));
if ((i < list.size() - 1)) writer.newLine();
}
writer.close();
}
}
}