Решил задачу и проверил стиль кода, как результат много замечаний по магическим числам.
Как лучше делать? допустим класс Date. Если в конструкторе мы вводим год как число int, то прибавляет это значение к 1900.
Следовательно, чтобы получать корректные значения, нужно отнимать 1900.
Что я и сделал:
allPeople.add(Person.createMale(args[1], new Date(BirthayDay[2]-1900,BirthayDay[1]-1,BirthayDay[0])));
Валидатор принял задачу, но как сделать код грамотнее?
код с ошибками
public static void main(String[] args) throws Exception{
//start here - начни тут
int[] BirthayDay; // массив, который хранит дату рождения = первый элемент год, второй месяц, третий день
switch (args[0]){
case "-c":
BirthayDay=calender(args[3]); // функция, которая заполняет массив, разделяя строку на символы, в данной ситуации дата это третий элемент
int id;
if(args[2].equals("м")){
allPeople.add(Person.createMale(args[1], new Date(BirthayDay[2]-1900,BirthayDay[1]-1,BirthayDay[0])));
}
else{
allPeople.add(по аналогии );
}
System.out.println(allPeople.size()-1);
break;
case "-u":
BirthayDay=calender(args[4]);
// Заполняем дату рождения
Date personDate = new Date(BirthayDay[2]-1900,BirthayDay[1]-1,BirthayDay[0]);
//присваиваем ид
id= Integer.parseInt(args[1]);
//DeletePerson(id);
allPeople.remove(id);
if(args[3].equals("м")){
allPeople.add(id,Person.createMale(args[2],personDate));
}
else {
allPeople.add(девушку по аналогии);
}
System.out.println(printPerson(id));
break;
case "-d":
id= Integer.parseInt(args[1]);
DeletePerson(id);
break;
case "-i":
id= Integer.parseInt(args[1]);
System.out.println(printPerson(id));
break;
}
}
private static int[] calender(String s){
int[] a=new int[3];
String[] dataArr = s.split("/");
for (int i = 0; i <dataArr.length ; i++) {
a[i]=Integer.parseInt(dataArr[i]);
}
return a;
}
private static String printPerson(int id){
if(allPeople.get(id).getSex().toString().equals("MALE")) {
return allPeople.get(id).getName() + " м " +
new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH).format(allPeople.get(id).getBirthDate());
}
else {
или возвращаем девушку
}
}
private static void DeletePerson(int id){
Person P = создаем Р из списка по id
P.setSex(null);
P.setBirthDate(null);
P.setName(null);
}