Написал свое решение, которое практически полностью аналогично "правильному", НО с
public static void main(String[] args) throws ParseException
Поменял на перехват в блоке try catch- все гуд
try {
switch (args[0]) {
case ("-c"):
synchronized (allPeople) {
for (int i = 1; i < args.length; i = i + 3) {
String name = args[i];
String sex = args[i + 1];
Date date = simpleDateFormat.parse(args[i + 2]);
Person person = sex.equals("м") ? Person.createMale(name, date) : Person.createFemale(name, date);
allPeople.add(person);
System.out.println(allPeople.indexOf(person));
}
}
break;
case ("-u"):
synchronized (allPeople) {
Date date;
Person person = null;
for (int i = 0; i < args.length - 1; i += 4) {
if (args[3 + i].contains("м")) {
date = simpleDateFormat.parse(args[4 + i]);
person = Person.createMale(args[2 + i], date);
} else {
date = simpleDateFormat.parse(args[4 + i]);
person = Person.createFemale(args[2 + i], date);
}
allPeople.set(Integer.parseInt(args[1 + i]), person);
}
}
break;
case ("-d"):
synchronized (allPeople) {
Date date;
Person person = null;
for (int i = 0; i < args.length - 1; i += 1) {
Person currentPerson = allPeople.get(Integer.parseInt(args[1 + i]));
currentPerson.setName(null);
currentPerson.setSex(null);
currentPerson.setBirthDate(null);
}
}
break;
case ("-i"):
synchronized (allPeople) {
Date date;
Person person = null;
for (int i = 0; i < args.length - 1; i += 1) {
person = allPeople.get(Integer.parseInt(args[1 + i]));
System.out.println(person.getName() + " " + (person.getSex() == Sex.MALE ? "м" : "ж") + " " + simpleDateFormat2.format(person.getBirthDate()));
}
}
break;
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
Что не так?