Казалось, верный алгоритм. Хотя бы наведите на мысль, куда копать, чтобы продвинуться? Можно решить, как у меня, или где-то зарылись грубые ошибки?
package com.javarush.task.task17.task1711;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/*
CRUD 2
*/
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
}
public static void main(String[] args) throws Exception {
SimpleDateFormat firstDate = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
SimpleDateFormat secondDate = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
switch (args[0]) {
case "-с":
synchronized (allPeople) {
int i = 1;
while (args[i] != null) {
if (args[i + 1].equals("м")) {
Person person = Person.createMale(args[i], firstDate.parse(args[i + 2]));
allPeople.add(person);
System.out.println(allPeople.indexOf(person));
} else if (args[i + 1].equals("ж")) {
Person person = Person.createFemale(args[i], firstDate.parse(args[i + 2]));
allPeople.add(person);
System.out.println(allPeople.indexOf(person));
}
i += 3;
} break;
}
case "-u":
synchronized (allPeople) {
int id = Integer.parseInt(args[1]);
while (args[id].isEmpty()) {
if (args[id + 2].equals("м")) {
allPeople.remove(id);
Person person = Person.createMale(args[id + 1], firstDate.parse(args[id + 3]));
allPeople.add(id, person);
} else if (args[id + 2].equals("ж")) {
allPeople.remove(id);
Person person = Person.createFemale(args[id + 1], firstDate.parse(args[id + 3]));
allPeople.add(id, person);
}
id += 3;
} break;
}
case "-d":
synchronized (allPeople) {
int id = Integer.parseInt(args[1]);
while (args[id].isEmpty()) {
allPeople.get(id).setName(null);
allPeople.get(id).setSex(null);
allPeople.get(id).setBirthDate(null);
id++;
} break;
}
case "-i":
synchronized (allPeople) {
int id = Integer.parseInt(args[1]);
while (args[id].isEmpty()) {
Person person = allPeople.get(id);
System.out.println(person.getName() + " " + (person.getSex().equals("м") ? "м" : "ж") + " " + secondDate.format(person.getBirthDate()));
id++;
} break;
}
}
}
}