Работает корректно. Удостоверяюсь, что человек добавляется, корректно изменяется, размер списка не меняется в случае -u. Не понимаю, что не так.
package com.javarush.task.task17.task1710;
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 SimpleDateFormat inputFormat = new SimpleDateFormat("dd/MMM/yyy", Locale.ENGLISH);
static SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
static {
allPeople.add(Person.createMale("Иванов Иван", new Date())); //сегодня родился id=0
allPeople.add(Person.createMale("Петров Петр", new Date())); //сегодня родился id=1
}
public static void main(String[] args) throws ParseException {
if (args == null || args.length < 1)
throw new RuntimeException();
switch (args[0]) {
case "-c": {
createPerson(args[1], args[2], inputFormat.parse(args[3]));
break;
}
case "-r": {
readPerson(Integer.parseInt(args[1]));
break;
}
case "-u": {
updatePerson(Integer.parseInt(args[1]), args[2], args[3], inputFormat.parse(args[4]));
break;
}
case "-d": {
deletePerson(Integer.parseInt(args[1]));
break;
}
}
}
private static void createPerson(String name, String sex, Date bd) {
if (sex.equals("ж"))
allPeople.add(Person.createFemale(name, bd));
else
allPeople.add(Person.createMale(name, bd));
System.out.println(allPeople.size() - 1);
System.out.println(allPeople.get(2));
}
private static void readPerson(int id) {
String result;
result = allPeople.get(id).getName() + " " + (allPeople.get(id).getSex() == Sex.FEMALE ? "ж" : "м") + " " + outputFormat.format(allPeople.get(id).getBirthDate());
System.out.println(result);
}
private static void updatePerson(int id, String name, String sex, Date bd) {
if (sex.equals("ж"))
allPeople.add(id, Person.createFemale(name, bd));
else
allPeople.add(id, Person.createMale(name, bd));
allPeople.remove(id + 1);
}
private static void deletePerson(int id) {
allPeople.get(id).setName(null);
allPeople.get(id).setSex(null);
allPeople.get(id).setBirthDate(null);
}
}