Программа запускается с одним из следующих наборов параметров: name — имя, String sex — пол, «м» или «ж», одна буква bd — дата рождения в следующем формате 15/04/1990 -c — добавляет человека с заданными параметрами в конец allPeople, выводит id (index) на экран -u — обновляет данные человека с данным id -d — производит логическое удаление человека с id, заменяет все его данные на null -i — выводит на экран информацию о человеке с id: name sex (м/ж) bd (формат 15-Apr-1990) id соответствует индексу в списке Все люди должны храниться в allPeople Пример вывода для параметра : Миронов м 15-Apr-1990 Правильно ли я поняла: мы сначала через консоль вводим команду, а потом значения для Person, над которыми хотим поработать этой командой??? посмотрите, пожалуйста, комментарии по ходу кода и подскажите, как все это работает! Очень туго у меня все идет с пониманием(((((((((((
package com.javarush.task.task17.task1710;


import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

/*
CRUD
*/

public class Solution {
    public static List<Person> allPeople = new ArrayList<Person>();

    static {
        allPeople.add(Person.createMale("Иванов Иван", new Date()));  //сегодня родился    id=0
        allPeople.add(Person.createMale("Петров Петр", new Date()));  //сегодня родился    id=1
    }

    public static void main(String[] args) throws IOException, ParseException {

        String command = args[0];
        String inputString = "";
        for (int i = 1; i < args.length; i++) {             //записываем наши данные в переменную inputString, но уже без команды
            inputString += args[i] + " ";
        }
        String[] inputParam = inputString.split(" ");   //создаем новый массив  из элементов

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);

        switch (command) {  //команда это всегда первый элемент массива, того, что мы ввели с консоли
            case "-c": {
                String name = "";
                int count = 0;
                for (int i = 0; i < inputParam.length; i++) {
                    if (!inputParam[i].equals("м") && !inputParam[i].equals("ж")) {  //смотрим, на каком месте стоит параметр, указывающий на пол человека?
                        name += inputParam[i] + " ";           // у нас параметр этот второй в массиве inputParam, поэтому записываем имя в переменную name
                        count++;
                    } else break;
                }
                name = name.substring(0, name.length() - 1);   //делаем из массива строку имени

                String sex = inputParam[count];
                Date birthdate = simpleDateFormat.parse(inputParam[count + 1]); //следующий параметр после пола это дата рождения, преобразуем ее, как нужно
                if (sex.equals("м")) {
                    allPeople.add(Person.createMale(name, birthdate));
                } else if (sex.equals("ж")) {
                    allPeople.add(Person.createFemale(name, birthdate));
                }
            }
            System.out.println(allPeople.size() - 1);
            break;

            case "-u":
{
                int id = Integer.parseInt(inputParam[0]);   //тут после команды вводят id? у нас же вроде имя было на нулевом месте в массиве
                String name = "";                                       //???????????????????????????????????????????????????????????????????????
                int count = 1;
                for (int i = 1; i < inputParam.length; i++) {
                    if (!inputParam[i].equals("м") && !inputParam[i].equals("ж")) {
                        name += inputParam[i] + " ";
                        count++;
                    } else break;
                }
                name = name.substring(0, name.length() - 1);

                String sex = inputParam[count];
                Date birthdate = simpleDateFormat.parse(inputParam[count + 1]);

                if (sex.equals("м")) {

                    Person p = allPeople.get(id);

                    p.setName(name);             //обновляем данные
                    p.setSex(Sex.MALE);
                    p.setBirthDay(birthdate);
                } else if (sex.equals("ж")) {
                    Person p = allPeople.get(id);
                    p.setName(name);
                    p.setSex(Sex.FEMALE);
                    p.setBirthDay(birthdate);
                }
            }
            break;

            case "-d": {

                Person p = allPeople.get(Integer.parseInt(inputParam[0]));  //тут после команды вводят id? у нас же вроде имя было на нулевом месте в массиве
                p.setBirthDay(null);                                                               //???????????????????????????????????????????????????????????????????????
                p.setName(null);
                p.setSex(null);
            }
            break;

            case "-i":

 {

                int id = Integer.parseInt(inputParam[0]);
                SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
                Person p = allPeople.get(id);
                String sex;
                if (p.getSex() == Sex.MALE) {
                    sex = "м";
                } else sex = "ж";
                System.out.println(p.getName() + " " + sex + " " + sdf.format(p.getBirthDay()));

            }
            break;
        }

    }
}