package com.javarush.test.level18.lesson10.bonus02;

/* Прайсы CrUD для таблицы внутри файла Считать с консоли имя файла для операций CrUD Программа запускается со следующим набором параметров: -c productName price quantity Значения параметров: где id - 8 символов productName - название товара, 30 chars (60 bytes) price - цена, 8 символов quantity - количество, 4 символа -c - добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле

В файле данные хранятся в следующей последовательности (без разделяющих пробелов): id productName price quantity Данные дополнены пробелами до их длины

Пример: 19846 Шорты пляжные синие 159.00 12 198478 Шорты пляжные черные с рисунко173.00 17 19847983Куртка для сноубордистов, разм10173.991234 */

import java.io.*; import java.util.ArrayList;

public class Solution {
public static void main(String[] args) throws Exception
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String str = reader.readLine();
    BufferedReader reader1 = new BufferedReader(new FileReader(str));

    ArrayList<String> listS = new ArrayList<>();

    while (reader1.ready())
    {
        listS.add(reader1.readLine());
    }

    ArrayList<Integer> listIn = new ArrayList<>();
    for (int i = 0; i < listS.size(); i++) {
        String m = "";
        for (int j = 0; j < 8; j++)
        {
            if (isDigit(listS.get(i).charAt(j)+""))
            {
                m+=listS.get(i).charAt(j)+"";
            }
        }
        listIn.add(Integer.parseInt(m));
    }

    int maxId = Integer.MIN_VALUE;

    for (int i = 0; i < listIn.size(); i++)
    {
        if (listIn.get(i)>maxId)
            maxId = listIn.get(i);
    }

    if (args.length>0)
    {
        maxId++;
        String k = maxId + "";
        String id = "";

        for (int i = 0; i < 8; i++)
        {
            if (i>k.length()-1)
            {
                id += " ";
                continue;
            }
            id += k.charAt(i) + "";
        }

        String k1 = "";
        for (int i = 1; i < args.length-2; i++)
        {
            k1 += args[i] + " ";
        }
        String productName = "";
        for (int i = 0; i < 30; i++) {
            if (i>k1.length()-1)
            {
                productName += " ";
                continue;
            }
            productName += k1.charAt(i) + "";
        }

        String k2 = args[args.length-2];
        String price = "";
        for (int i = 0; i < 8; i++) {
            if (i>k2.length()-1)
            {
                price += " ";
                continue;
            }
            price += k2.charAt(i) + "";
        }

        String k3 = args[args.length-1];
        String quantity = "";
        for (int i = 0; i < 4; i++) {
            if (i>k3.length()-1)
            {
                quantity += " ";
                continue;
            }
            quantity += k3.charAt(i) + "";
        }

        String filePath = str;
        String text = "\r\n"+id+productName+price+quantity;

        try {
            FileWriter writer = new FileWriter(filePath, true);
            BufferedWriter bufferWriter = new BufferedWriter(writer);
            bufferWriter.write(text);
            bufferWriter.close();
        }
        catch (IOException e) {
            System.out.println(e);
        }
    }

    reader.close();
    reader1.close();

}

private static boolean isDigit(String s) throws NumberFormatException {
    try {
        Integer.parseInt(s);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

}

задан 11 Янв, 19:49

Andrii5114's gravatar image

Andrii5114
988
одобрено: 78%

Отмечайте.

(12 Янв, 08:13) Haart

newuser01, оставьте ответ и я отмечу его, как правильний

(12 Янв, 08:12) Andrii5114

спасибо, сдал!!!

(12 Янв, 08:10) Andrii5114

Если вам дадут на вход пустой файл, то результат работы программы будет некорректен. (я в этом случае присваивал id = 0)
Также рекомендую почитать про String.format, программа сократится в размерах и станет проще для восприятия. FileWriter отлично записывает строки самостоятельно без оберток.

ссылка

опубликован 11 Янв, 21:05

newuser01's gravatar image

newuser01
1.0k6
одобрено: 46%

Ваш ответ
включить просмотр

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×764
×497
×337

Задан: 11 Янв, 19:49

Просмотров: 240 раз

Отредактирован: 12 Янв, 08:13