Значит так, вот что я написал без подсказок:
public class Solution {
    public static volatile List<Person> allPeople = new ArrayList<Person>();

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

    static SimpleDateFormat inDate = new SimpleDateFormat("dd/MM/yyyy");
    static SimpleDateFormat outDate = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);

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

           switch (args[0]) {
               case "-c":
                   synchronized (allPeople) {
                       int n = 1;
                       try {
                           while (args[n] != null) {
                               if (args[n + 1].equals("м")) {
                                   allPeople.add(Person.createMale(args[n], inDate.parse(args[n + 2])));
                                   System.out.println(allPeople.size() - 1);
                               } else if (args[n + 1].equals("ж")) {
                                   allPeople.add(Person.createFemale(args[n], inDate.parse(args[n + 2])));
                                   System.out.println(allPeople.size() - 1);
                               }
                               n = n + 3;
                           }
                           break;
                       } catch (IndexOutOfBoundsException e) {
                           break;
                       }
                   }

               case "-u":
                   synchronized (allPeople) {
                       int n = 1;
                       try {
                           while (args[n] != null) {
                               (allPeople.get(Integer.parseInt(args[n]))).setName(args[n + 1]);
                               if ((args[n + 2]).equals("м")) {
                                   (allPeople.get(Integer.parseInt(args[n]))).setSex(Sex.MALE);
                               } else if ((args[n + 2]).equals("ж")) {
                                   (allPeople.get(Integer.parseInt(args[n]))).setSex(Sex.FEMALE);
                               }
                               (allPeople.get(Integer.parseInt(args[n]))).setBirthDate(inDate.parse(args[n + 3]));
                               n = n + 4;
                           }
                           break;
                       } catch (IndexOutOfBoundsException e) {
                           break;
                       }
                   }

               case "-d":
                   synchronized (allPeople) {
                       int n = 1;
                       try {
                           while (args[n] != null) {
                               allPeople.get(Integer.parseInt(args[n])).setName(null);
                               allPeople.get(Integer.parseInt(args[n])).setSex(null);
                               allPeople.get(Integer.parseInt(args[n])).setBirthDate(null);
                               n = n + 1;
                           }
                           break;
                       } catch (IndexOutOfBoundsException e) {
                           break;
                       }
                   }

               case "-i":
                   synchronized (allPeople) {
                       int n = 1;
                       try {
                           while (args[n] != null) {
                               if ((allPeople.get(Integer.parseInt(args[n])).getSex()).equals(Sex.MALE)) {
                                   System.out.println(allPeople.get(Integer.parseInt(args[n])).getName() + " " + "м" + " " +
                                           outDate.format(allPeople.get(Integer.parseInt(args[n])).getBirthDate()));
                               } else if ((allPeople.get(Integer.parseInt(args[n])).getSex()).equals(Sex.FEMALE)) {
                                   System.out.println(allPeople.get(Integer.parseInt(args[n])).getName() + " " + "ж" + " " +
                                           outDate.format(allPeople.get(Integer.parseInt(args[n])).getBirthDate()));
                               }
                               n = n + 1;
                           }
                           break;
                       } catch (IndexOutOfBoundsException e) {
                           break;
                       }
                   }
           }
    }
}
Бросает исключение: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at com.javarush.task.task17.task1711.Solution.main(Solution.java:27) По этому куску кода, выявил тестами:
case "-u":
                  synchronized (allPeople) {
                      int n = 1;
                      try {
                          while (args[n] != null) {
                              (allPeople.get(Integer.parseInt(args[n]))).setName(args[n + 1]);
                              if ((args[n + 2]).equals("м")) {
                                  (allPeople.get(Integer.parseInt(args[n]))).setSex(Sex.MALE);
                              } else if ((args[n + 2]).equals("ж")) {
                                  (allPeople.get(Integer.parseInt(args[n]))).setSex(Sex.FEMALE);
                              }
                              (allPeople.get(Integer.parseInt(args[n]))).setBirthDate(inDate.parse(args[n + 3]));
                              n = n + 4;
                          }
                          break;
                      } catch (IndexOutOfBoundsException e) {
                          break;
                      }
                  }
Та же история с запуском правильного решения от JavaRush, обьясните пожалуйста что тут не так?