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 ParseException {
SimpleDateFormat simpleDateFormatIn = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
SimpleDateFormat simpleDateFormatOut = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
int iterationNumber;
int id;
Date date;
Person person;
int i = 1;
switch (args[0]) {
case ("-c"):
synchronized (allPeople) {
iterationNumber = (args.length - 1) / 3;
while (i < args.length) {
date = simpleDateFormatIn.parse(args[i + 2]);
if (args[i + 1].equals("м")) {
person = Person.createMale(args[i], date);
allPeople.add(person);
} else {
person = Person.createFemale(args[i], date);
allPeople.add(person);
}
if (i == args.length) {
System.out.print(allPeople.indexOf(person));
} else {
System.out.print(allPeople.indexOf(person) + " ");
}
i = i + 3;
}
break;
}
case ("-u"):
synchronized (allPeople) {
iterationNumber = (args.length - 1) / 4;
if (allPeople.size() >= iterationNumber) {
while (i < args.length) {
id = Integer.parseInt(args[i]);
person = allPeople.get(id);
date = simpleDateFormatIn.parse(args[i + 3]);
if (args[i + 2].equals("м")) {
allPeople.set(id,Person.createMale(args[i+1], date));
} else {
allPeople.set(id,Person.createFemale(args[i+1], date));
}
i = i + 4;
}
}
break;
}
case ("-d"):
synchronized (allPeople) {
iterationNumber = args.length - 1;
while ((i <= iterationNumber)) {
id = Integer.parseInt(args[i]);
person = allPeople.get(id);
person.setName(null);
person.setBirthDate(null);
person.setSex(null);
allPeople.set(id, person);
i++;
}
break;
}
case ("-i"):
synchronized (allPeople) {
iterationNumber = args.length - 1;
while (i != iterationNumber) {
id = Integer.parseInt(args[i]);
if (allPeople.get(id).getSex().equals(Sex.MALE)) {
System.out.println(allPeople.get(id).getName() + " м " + simpleDateFormatOut.format(allPeople.get(id).getBirthDate()));
} else {
System.out.println(allPeople.get(id).getName() + " ж " + simpleDateFormatOut.format(allPeople.get(id).getBirthDate()));
}
i++;
}
break;
}
}
}
}MisterMisix
36 уровень
При параметре -i программа должна выводить на экран данные о всех людях с заданными id по формату указанному в задании. Убедись, что выводится на экран дата рождения человека (формат 15-Apr-1990). Что не так с форматом?
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Sergei
4 ноября 2021, 12:41
С форматом всё нормально.
Думаю проблема в строках 76-77:
iterationNumber = args.length - 1;
while (i != iterationNumber) {
При таком подходе отсекается последний id
0
MisterMisix
4 ноября 2021, 12:44решение
поставил меньше или равно, проверку прошёл, к слову не задумывался об этом, глядя на слова ментора про формат даты...
+2
Ksenia VolkovaJava Developer в DXCMaster
4 ноября 2021, 12:35решение
Почему?
+2
MisterMisix
4 ноября 2021, 12:41
потому что если в массиве например 5 значений, первое "-i", остальные 4 - это id. как выведем информацию по всем 4 id - break;
0