Привет! Помогите, пожалуйста, разобраться.
1. Запускаю код. В итоге в файл, к тем данным, что там есть, записывается содержимое List (т.е. данные просто копируются в любом случае). Что не так?
2. Указываю параметр в виде -u 198479 Шорты пляжные 799.00 17. Программа вылетает с ошибкой "Exception in thread "main" java.lang.NumberFormatException: For input string: "пляжные"". Ссылается на строку http://prntscr.com/pih63g. Что, в принципе, и понятно, так как по сути, args[3] это и есть "пляжные", а по идее это должна быть цена товара.
Как поправить эту ошибку?
Заранее спасибо!
package com.javarush.task.task18.task1828;
/*
Прайсы 2
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается с одним из следующих наборов параметров:
-u id productName price quantity
-d id
Значения параметров:
где id - 8 символов
productName - название товара, 30 символов
price - цена, 8 символов
quantity - количество, 4 символа
-u - обновляет данные товара с заданным id
-d - производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)
В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины
Пример:
19847 Шорты пляжные синие 159.00 12
198479 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
Требования:
1. Программа должна считать имя файла для операций CrUD с консоли.
2. При запуске программы без параметров список товаров должен остаться неизменным.
3. При запуске программы с параметрами "-u id productName price quantity" должна обновится информация о товаре в файле.
4. При запуске программы с параметрами "-d id" строка товара с заданным id должна быть удалена из файла.
5. Созданные для файлов потоки должны быть закрыты.
args[0] = -u or -d
args[1] = id
args[2] = productName
args[3] = price
args[4] = quantity
C:\Users\1\Desktop\price.txt
*/
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
List<String> list = new ArrayList<String>();
String fileName = bufferedReader.readLine();
bufferedReader.close();
FileReader fileReader = new FileReader(fileName);
BufferedReader reader = new BufferedReader(fileReader);
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileName, true));
String line;
while ((line = reader.readLine()) != null) {
if (!line.isEmpty()) {
list.add(line);
}
}
if (args.length > 0) {
if ("-u".equals(args[0])) {
String id = String.format("%-8d", Integer.parseInt(args[1]));
String productName = String.format("%-30.30s", args[2]);
String price = String.format("%-8.2f", Double.parseDouble(args[3]));
String quantity = String.format("%-4d", Integer.parseInt(args[4]));
for (String s : list) {
if (s.substring(0, 8).trim().equals(args[1])) {
list.set(list.indexOf(s), (id + productName + price + quantity));
}
}
}
if ("-d".equals(args[0])) {
for (String s : list) {
if (s.substring(0, 8).trim().equals(args[1])) {
list.remove(s);
}
}
}
for (String s : list) {
bufferedWriter.newLine();
bufferedWriter.write(s);
}
fileReader.close();
bufferedReader.close();
bufferedWriter.close();
}
}
}