Задавал этот вопрос ранее. Отредактировал следую советам из комментариев.
Однако результат не изменился.
Не понимаю почему меняются размеры списка и зачем переопределять toString() в -i, функции, которые я там использую возвращают String. SimpleDateFormat.format(...) возвращает StringBuffer. Или это принципиально ?
Не проходит валидацию для 3 параметров. Не могу понять ошибки.
-u: Убедись, что при обновлении данных человека размер списка allPeople не меняется.. Почему размер списка меняется, если я использую get и set ArrayList?
-d: Убедись, что при обновлении данных человека размер списка allPeople не меняется.. Как в -u
-i: Убедись, что при параметре -i выводятся на экран данные человека.. Должно выводиться.
package com.javarush.task.task17.task1710;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.text.SimpleDateFormat;
import java.util.Locale;
/*
CRUD
*/
public class Solution {
public static 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 ParseException {
//start here - начни тут
String name, sex;
Date bd = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(args[3]);
int id;
switch (args[0]){
case "-c": //добавляет человека с заданными параметрами в конец allPeople, выводит id (index) на экран
//[args0 -c], [args1 name], [args2 sex], [args3 bd].
name = args[1];
if (args[2].equals("м")){
allPeople.add(Person.createMale(name, bd));
}
else if (args[2].equals("ж")){
allPeople.add(Person.createFemale(name, bd));
}
id = allPeople.size()-1;
System.out.println(id);
break;
case "-u": //обновляет данные человека с данным id
//[args0 -u], [args1 id], [args2 name], [args3 sex], [args4 bd].
id = Integer.parseInt(args[1]);
name = args[2];
sex = args[3];
bd = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(args[4]);
allPeople.get(id).setName(name);
allPeople.get(id).setBirthDate(bd);
if (args[3].equals("м")){
allPeople.get(id).setSex(Sex.MALE);
}
else if (args[3].equals("ж")){
allPeople.get(id).setSex(Sex.FEMALE);
}
break;
case "-d": //производит логическое удаление человека с id, заменяет все его данные на null
//[args0 -d], [args1 id], [args2 name], [args3 sex], [args4 bd].
id = Integer.parseInt(args[1]);
allPeople.get(id).setName(null);
allPeople.get(id).setSex(null);
allPeople.get(id).setBirthDate(null);
break;
case "-i": //выводит на экран информацию о человеке с id: name sex (м/ж) bd (формат 15-Apr-1990)
//[args0 -d], [args1 id], [args2 name], [args3 sex], [args4 bd].
id = Integer.parseInt(args[1]);
String s = " ";
if (allPeople.get(id).getSex().equals(Sex.MALE)){
s = "м";
}
else if (allPeople.get(id).getSex().equals(Sex.FEMALE)){
s = "ж";
}
SimpleDateFormat ans = new SimpleDateFormat("dd-MMM-yyy", Locale.ENGLISH);
System.out.println(allPeople.get(id).getName() + " " + s + " " + ans.format(allPeople.get(id).getBirthDate()));
break;
}
}
}