Почему если мы пишем -c Миронов м 15/04/1990" в аргументах, name сначала имеет позицию первого элемента, а после уже второго (при реализации иного параметра). Разве в этом случае это логично?
CrUD - Create, Update, Delete.
Программа запускается с одним из следующих наборов параметров:
-c name sex bd
-u id name sex bd
-d id
-i id
Значения параметров:
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.
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat.
public static void main(String[] args) throws ParseException {
Person p;
String name;
Sex sex;
Date bd;
int id;
SimpleDateFormat date = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
if(args[0].equals("-c")){
name = args[1]; // позиция элемента 1
sex = (args[2] == "м") ? Sex.MALE : Sex.FEMALE;
bd = date.parse(args[3]);
if(sex == Sex.MALE){
p = Person.createMale(name, bd);
}
else{
p = Person.createFemale(name, bd);
}
allPeople.add(p);
System.out.println(allPeople.indexOf(p));
}
if(args[0].equals("-u")){
id = Integer.parseInt(args[1]);
name = args[2]; // позиция элемента 2
sex = (args[3] == "м") ? Sex.MALE : Sex.FEMALE;
bd = date.parse(args[4]);
p = allPeople.get(id);
p.setName(name);
p.setSex(sex);
p.setBirthDate(bd);
}
if(args[0].equals("-d")){
id = Integer.parseInt(args[1]);
p = allPeople.get(id);
p.setName(null);
p.setSex(null);
p.setBirthDate(null);
}