18 уровень меня убивает. Все, вроде, работает. Добавила миллион кода в соответствии с рекомендациями к другим вопросам. Но все никак. Помогите, пожалуйста.
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public static void main(String[] args) throws Exception {
// C:/Users/79265/Desktop/строки1.txt
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
reader.close();
BufferedReader fis = new BufferedReader(new FileReader(file));
ArrayList<String> list = new ArrayList<>();
while (fis.ready()) {
String i = fis.readLine();
list.add(i);
}
Solution sol = new Solution();
fis.close();
BufferedWriter fos = new BufferedWriter(new FileWriter(file));
for (int i = 0; i < (list.size())-1; i++) {
fos.write(list.get(i));
String a = System.lineSeparator();
fos.write(a);
}
fos.write(list.get(list.size()-1));
fos.close();
String id = null;
String productName = null;
String price = null;
String quantity = null;
try {
if (args[0].equals("-u")) {
productName = sol.rightPN(sol.stringCreation(args));
price = sol.rightPrice(args[args.length - 2]);
quantity = sol.rightQuantity(args[args.length - 1]);
id = sol.rightId(args[1]);
String a = System.lineSeparator();
String result = id + productName + price + quantity;
String toFind = sol.findId(list, id);
if (toFind == null) {
throw new ArrayIndexOutOfBoundsException();
}
BufferedWriter fos1 = new BufferedWriter(new FileWriter(file));
for (int i = 0; i < list.size(); i++) {
if (toFind.equals(list.get(i))) {
list.remove(i);
list.add(i, result);
break;
}
}
for (int i = 0; i < (list.size())-1; i++) {
fos1.write(list.get(i));
fos1.write(a);
}
fos1.write(list.get(list.size()-1));
fos1.close();
}
else if (args[0].equals("-d")) {
id = sol.rightId(args[1]);
String toFind = sol.findId(list, id);
String a = System.lineSeparator();
if (toFind == null) {
throw new ArrayIndexOutOfBoundsException();
}
BufferedWriter fos1 = new BufferedWriter(new FileWriter(file));
for (int i = 0; i < list.size(); i++) {
if (toFind.equals(list.get(i))) {
list.remove(i);
break;
}
}
for (int i = 0; i < (list.size())-1; i++) {
fos1.write(list.get(i));
fos1.write(a);
}
fos1.write(list.get(list.size()-1));
fos1.close();
}
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Нет параметров");
}
}
public String findId(ArrayList<String> list1, String find) {
String found = null;
for (int i = 0; i < list1.size(); i++) {
String s = list1.get(i).substring(0,8);
if (s.equals(find)) {
found = list1.get(i);
break;
}
}
return found;
}
public String rightPN (String s) {
if (s.length() < 30) {
for (int i = s.length(); i < 30; i++) {
s = s + " ";
}
return s;
}
else if (s.length() > 30) {
return s.substring(0,30);
}
else return s;
}
public String rightPrice (String s) {
if (s.length() < 8) {
for (int i = s.length(); i < 8; i++) {
s = s + " ";
}
return s;
}
else if (s.length() > 8) {
return s.substring(0,8);
}
else return s;
}
public String rightQuantity (String s) {
if (s.length() < 4) {
for (int i = s.length(); i < 4; i++) {
s = s + " ";
}
return s;
}
else if (s.length() > 4) {
return s.substring(0,4);
}
else return s;
}
public String rightId (String f) {
String s = f.trim();
if (s.length() < 8) {
for (int i = s.length(); i < 8; i++) {
s = s + " ";
}
return s;
}
else if (s.length() > 8) {
return s.substring(0,8);
}
else return s;
}
public String stringCreation(String [] args) {
String stringLine = args[2] + " ";
for (int i = 3; i < args.length - 2; i++) {
stringLine += args[i] + " ";
}
return stringLine;
}
}