level17.lesson10.home04 (синхронизированные методы)

private synchronized void method4() {
        new StringBuilder().append(1).append(1).append(1).append(1);
    }


Объясните пожалуйста, зачем здесь синхронизация? метод же private. Никакой объект класса не имеет к нему доступа (и через другие методы он не вызывается).
Заранее спасибо!
  • ,

level17.lesson10.bonus01 подскажите где ошибка. всё работает, но тест не проходит

package com.javarush.test.level17.lesson10.bonus01;

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
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
-i  - выводит на экран информацию о человеке с id: name sex (м/ж) bd (формат 15-Apr-1990)

id соответствует индексу в списке
Все люди должны храниться в allPeople
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat

Пример параметров: -c Миронов м 15/04/1990
*/

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) {
        if (args.length < 2 || args.length > 6 || args.length == 3) {
            return;
        }
        try {
            if (args[0].equals("-c")) {     // create new person and add this to ArrayList
                switch (args[2]) {          // switch sex
                    case "м":
                        allPeople.add(Person.createMale(args[1], new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(args[args.length - 1])));
                        System.out.println(allPeople.size() - 1);
                        break;
                    case "ж":
                        allPeople.add(Person.createFemale(args[1], new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(args[args.length - 1])));
                        System.out.println(allPeople.size() - 1);
                        break;
                    default:
                        break;
                }
            }

            int id = Integer.parseInt(args[1]);

            switch (args[0]) {              // switch command
                case "-d":                  // remove person with id xxx
                    allPeople.remove(id);
                    break;
                case "-u":                  // update person with id xxx
                    switch (args[3]) {      // switch sex
                        case "м":
                            allPeople.set(id, Person.createMale(args[2], new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(args[args.length - 1])));
                            break;
                        case "ж":
                            allPeople.set(id, Person.createFemale(args[2], new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(args[args.length - 1])));
                            break;
                    }
                    break;
                case "-i":              // info about person with id xxx
                    System.out.println((allPeople.get(id)).toString());
                    break;
                default:
                    break;
            }
        } catch (ParseException | NumberFormatException ignored) {

        }
    }
}


и второй класс

package com.javarush.test.level17.lesson10.bonus01;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Person {
    private String name;
    private Sex sex;
    private Date birthDay;

    private Person(String name, Sex sex, Date birthDay) {
        this.name = name;
        this.sex = sex;
        this.birthDay = birthDay;
    }

    public static Person createMale(String name, Date birthDay) {
        return new Person(name, Sex.MALE, birthDay);
    }

    public static Person createFemale(String name, Date birthDay) {
        return new Person(name, Sex.FEMALE, birthDay);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Sex getSex() {
        return sex;
    }

    public void setSex(Sex sex) {
        this.sex = sex;
    }

    public Date getBirthDay() {
        return birthDay;
    }

    public void setBirthDay(Date birthDay) {
        this.birthDay = birthDay;
    }

    public String toString() {
        String out;
        if (sex.equals(Sex.MALE))
            out = "м";
        else
            out = "ж";

        SimpleDateFormat format1 = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
        return name + " " + out + " " + format1.format(getBirthDay());
    }
}
  • ,

level17.lesson10.bonus01 подскажите где ошибка. всё работает, но тест не проходит

package com.javarush.test.level17.lesson10.bonus01;

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
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
-i  - выводит на экран информацию о человеке с id: name sex (м/ж) bd (формат 15-Apr-1990)

id соответствует индексу в списке
Все люди должны храниться в allPeople
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat

Пример параметров: -c Миронов м 15/04/1990
*/

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) {
        if (args.length < 2 || args.length > 6 || args.length == 3) {
            return;
        }
        try {
            if (args[0].equals("-c")) {     // create new person and add this to ArrayList
                switch (args[2]) {          // switch sex
                    case "м":
                        allPeople.add(Person.createMale(args[1], new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(args[args.length - 1])));
                        System.out.println(allPeople.size() - 1);
                        break;
                    case "ж":
                        allPeople.add(Person.createFemale(args[1], new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(args[args.length - 1])));
                        System.out.println(allPeople.size() - 1);
                        break;
                    default:
                        break;
                }
            }

            int id = Integer.parseInt(args[1]);

            switch (args[0]) {              // switch command
                case "-d":                  // remove person with id xxx
                    allPeople.remove(id);
                    break;
                case "-u":                  // update person with id xxx
                    switch (args[3]) {      // switch sex
                        case "м":
                            allPeople.set(id, Person.createMale(args[2], new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(args[args.length - 1])));
                            break;
                        case "ж":
                            allPeople.set(id, Person.createFemale(args[2], new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(args[args.length - 1])));
                            break;
                    }
                    break;
                case "-i":              // info about person with id xxx
                    System.out.println((allPeople.get(id)).toString());
                    break;
                default:
                    break;
            }
        } catch (ParseException | NumberFormatException ignored) {

        }
    }
}


и второй класс

package com.javarush.test.level17.lesson10.bonus01;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Person {
    private String name;
    private Sex sex;
    private Date birthDay;

    private Person(String name, Sex sex, Date birthDay) {
        this.name = name;
        this.sex = sex;
        this.birthDay = birthDay;
    }

    public static Person createMale(String name, Date birthDay) {
        return new Person(name, Sex.MALE, birthDay);
    }

    public static Person createFemale(String name, Date birthDay) {
        return new Person(name, Sex.FEMALE, birthDay);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Sex getSex() {
        return sex;
    }

    public void setSex(Sex sex) {
        this.sex = sex;
    }

    public Date getBirthDay() {
        return birthDay;
    }

    public void setBirthDay(Date birthDay) {
        this.birthDay = birthDay;
    }

    public String toString() {
        String out;
        if (sex.equals(Sex.MALE))
            out = "м";
        else
            out = "ж";

        SimpleDateFormat format1 = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
        return name + " " + out + " " + format1.format(getBirthDay());
    }
}
  • ,

level17.lesson10.bonus01 снова

Господа, что здесь не подходит под тесты? замучился уже, все топики перечитал, ни один совет не помогает…

package com.javarush.test.level17.lesson10.bonus01;

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
CrUD - Create, Update, Delete
Программа запускается с одним из следующих наборов параметров:
-c name sex bd
-u id name sex bd
-d id
-i id
Значения параметров:
name - имя, String
sex - пол, "м" или "ж", одна буква
bd - дата рождения в следующем формате 15/04/1990
-с  - добавляет человека с заданными параметрами в конец allPeople, выводит id (index) на экран
-u  - обновляет данные человека с данным id
-d  - производит логическое удаление человека с id
-i  - выводит на экран информацию о человеке с id: name sex (м/ж) bd (формат 15-Apr-1990)

id соответствует индексу в списке
Все люди должны храниться в allPeople
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat

Пример параметров: -c Миронов м 15/04/1990
*/

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) {
        //start here - начни тут
        if(args[0].equals("-c")){
            create(args[1], args[2], args[3]);
        }else if(args[0].equals("-u")){
            update(args[1], args[2], args[3], args[4]);
        }else if(args[0].equals("-d")){
            delete(args[1]);
        }else if(args[0].equals("-i")){
            inform(args[1]);
        }
    }

    private static void create(String name, String sex, String bd){
        Date birthDay = new Date();
        try{
            birthDay = dateParser(bd, "dd/MM/yyyy");
        }
        catch (ParseException e){
            e.printStackTrace();
        }

        if(sex.equals("м")){
            allPeople.add(Person.createMale(name, birthDay));
            System.out.println(allPeople.size() - 1);
        }
        if(sex.equals("ж")){
            allPeople.add(Person.createFemale(name, birthDay));
            System.out.println(allPeople.size() - 1);
        }
    }

    private static void update(String id, String name, String sex, String bd){
        Date birthDay = new Date();
        int index = -1;

        try{
            birthDay = dateParser(bd, "dd/mm/yyyy");
            index = Integer.parseInt(id);
        }
        catch (ParseException e){
            e.printStackTrace();
        }


        if (index >= 0)
        {
            allPeople.get(index).setBirthDay(birthDay);
            allPeople.get(index).setName(name);
            if(sex.equals("м")) allPeople.get(index).setSex(Sex.MALE);
            if(sex.equals("ж")) allPeople.get(index).setSex(Sex.FEMALE);
        }
    }

    private static void delete(String id){
        try
        {
            int index = Integer.parseInt(id);
            allPeople.get(index).setBirthDay(null);
        }
        catch (NumberFormatException e)
        {
            e.printStackTrace();
        }
    }

    private static void inform(String id){
        int index = -1;
        try{
            index = Integer.parseInt(id);
        }
        catch (NumberFormatException e){
            e.printStackTrace();
        }
        StringBuilder stringBuilder = new StringBuilder();
        if(index >= 0){
            String name = allPeople.get(index).getName();
            String sex = "неизвестный пол";
            if(allPeople.get(index).getSex().equals(Sex.MALE)) sex = "м";
            if(allPeople.get(index).getSex().equals(Sex.FEMALE)) sex = "ж";

            Date bd = allPeople.get(index).getBirthDay();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
            String birthDay = simpleDateFormat.format(bd);

            stringBuilder.append(name)
                        .append(" ")
                        .append(sex)
                        .append(" ")
                        .append(birthDay);
        }
        System.out.println(stringBuilder.toString());
    }

    public static Date dateParser(String string, String format) throws ParseException
    {
        SimpleDateFormat formatter = new SimpleDateFormat(format, Locale.ENGLISH);
        Date date = formatter.parse(string);
        return date;
    }
}

level17.lesson10.bonus01

import java.text.ParseException;
import java.util.*;
import java.text.SimpleDateFormat;

/* CRUD
CrUD - Create, Update, Delete
Программа запускается с одним из следующих наборов параметров:
-c name sex bd
-u id name sex bd
-d id
-i id
Значения параметров:
name - имя, String
sex - пол, "м" или "ж", одна буква
bd - дата рождения в следующем формате 15/04/1990
-с  - добавляет человека с заданными параметрами в конец allPeople, выводит id (index) на экран
-u  - обновляет данные человека с данным id
-d  - производит логическое удаление человека с id
-i  - выводит на экран информацию о человеке с id: name sex (м/ж) bd (формат 15-Apr-1990)

id соответствует индексу в списке
Все люди должны храниться в allPeople
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat

Пример параметров: -c Миронов м 15/04/1990
*/

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
        allPeople.add(Person.createFemale("Лиза Подлиза", new Date()));
        allPeople.add(Person.createFemale("Инна Вагинна", new Date()));
    }

    public static void main(String[] args) throws ParseException
    {
        //start here - начни тут
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-y", Locale.ENGLISH);
        if (args[0].equals("-c"))
        {
            int a = allPeople.size()+1;
            Date date = new Date(Date.parse(args[3]));
            if (args[2].equals("м"))
            {
                allPeople.add(Person.createMale(args[1], date ));
            } else
            {
                allPeople.add(Person.createFemale(args[1], date ));
            }
            System.out.println(a);
        }
            if (args[0].equals("-u")){
                Date date = new Date(Date.parse(args[4]));
                if (args[3].equals('м')){
                    allPeople.set(Integer.parseInt(args[1]), Person.createMale(args[2], date));
                }else {
                    allPeople.set(Integer.parseInt(args[1]), Person.createFemale(args[2], date));
                }
            }
            if (args[0].equals("-d")){
                Person person = allPeople.get(Integer.parseInt(args[1]));
                person.setBirthDay(null);person.setSex(null);person.setName(null);
            }
            if (args[0].equals("-i")){
                Person person = allPeople.get(Integer.parseInt(args[1]));
                System.out.printf("%s %s %s", person.getName(), person.getSex().equals(Sex.MALE)?"м":"ж", dateFormat.format(person.getBirthDay()));
            }
        }
    }
  • ,

level17.lesson10.bonus01

package com.javarush.test.level17.lesson10.bonus01;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/* CRUD
CrUD - Create, Update, Delete
Программа запускается с одним из следующих наборов параметров:
-c name sex bd
-u id name sex bd
-d id
-i id
Значения параметров:
name - имя, String
sex - пол, "м" или "ж", одна буква
bd - дата рождения в следующем формате 15/04/1990
-с  - добавляет человека с заданными параметрами в конец allPeople, выводит id (index) на экран
-u  - обновляет данные человека с данным id
-d  - производит логическое удаление человека с id
-i  - выводит на экран информацию о человеке с id: name sex (м/ж) bd (формат 15-Apr-1990)

id соответствует индексу в списке
Все люди должны храниться в allPeople
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat

Пример параметров: -c Миронов м 15/04/1990
*/

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) {
        //start here - начни тут
        crud(args);
    }

    public static void crud(String[] args) {
        if (args[0].equals("-c")) {
            create(args);
        }
        else if (args[0].equals("-u")) {
            update(args);
        }
        else if (args[0].equals("-d")) {
            delete(args);
        }
        else if (args[0].equals("-i")) {
            information(args);
        }
    }    
}


Не хочет проходить проверку, посоветуйте чтонибудь?

level17.lesson10.bonus01

package com.javarush.test.level17.lesson10.bonus01;

import java.text.DateFormat;
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
CrUD - Create, Update, Delete
Программа запускается с одним из следующих наборов параметров:
-c name sex bd
-u id name sex bd
-d id
-i id
Значения параметров:
name - имя, String
sex - пол, "м" или "ж", одна буква
bd - дата рождения в следующем формате 15/04/1990
-с  - добавляет человека с заданными параметрами в конец allPeople, выводит id (index) на экран
-u  - обновляет данные человека с данным id
-d  - производит логическое удаление человека с id
-i  - выводит на экран информацию о человеке с id: name sex (м/ж) bd (формат 15-Apr-1990)

id соответствует индексу в списке
Все люди должны храниться в allPeople
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat

Пример параметров: -c Миронов м 15/04/1990
*/

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) {
        if (args.length == 0) return;
        if (args[0].equals("-c")) addPerson(args);
        else if(args[0].equals("-u")) updatePerson(args);
        else if(args[0].equals("-d")) deletePerson(args);
        else if(args[0].equals("-i")) showPerson(args);
        SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy",Locale.ENGLISH);
        for(Person person: allPeople)
            System.out.println(person.getName()+ " "+sexToString(person.getSex())+" "+ format.format(person.getBirthDay()));


    }

    public static String sexToString(Sex sex){
        return (sex == Sex.MALE)?"м":"ж";
    }
    public static void addPerson(String[] args){
        if(args.length < 4
                ) return;
        DateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
        Date bd = new Date();
        Sex sex= null;
        StringBuilder name = new StringBuilder();
        int paramFromEndCount = 0; // to understand what parameter we are processing
        int indexNameEnd =0;
        for (int i = args.length-1 ; i >0 ; i--) {
            if (paramFromEndCount == 0) try{
                bd = format.parse(args[i]);
                paramFromEndCount++;
            }catch (ParseException ie){System.out.println(args[i]+" not a good date"); return;}
            else if (paramFromEndCount==1){
                if("м".equals(args[i])) sex = Sex.MALE;
                else if ("ж".equals(args[i])) sex = Sex.FEMALE;
                else {System.out.println("sex is not correctly defined");
                return;}
                paramFromEndCount++;

            }
            else if (paramFromEndCount == 2) {
                indexNameEnd = i;
                break;
            }
            else return;
        }
        for (int i = 1; i <= indexNameEnd; i++) {
            name.append(args[i]);
            name.append(" ");
        }
        name.delete(name.length()-1,name.length());
        allPeople.add((sex == Sex.MALE)?Person.createMale(name.toString(),bd):Person.createFemale(name.toString(),bd));
        System.out.println(allPeople.size()-1);

    }
    public static void updatePerson(String[] args){
        if(args.length < 4) return;

        DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        Date bd = new Date();
        Sex sex= null;
        StringBuilder name = new StringBuilder();
        int id = Integer.parseInt(args[1]);
        int indexNameEnd = 0;

        int paramFromEndCount = 0; // to understand what parameter we are processing
        for (int i = args.length-1 ; i >1 ; i--) {
            if (paramFromEndCount == 0) try{
                bd = format.parse(args[i]);
                paramFromEndCount++;
            }catch (ParseException ie){System.out.println(args[i]+" not a good date"); return;}
            else if (paramFromEndCount==1){
                if("м".equals(args[i])) sex = Sex.MALE;
                else if ("ж".equals(args[i])) sex = Sex.FEMALE;
                else {System.out.println("sex is not correctly defined");
                    return;}
                paramFromEndCount++;

            }
            else if (paramFromEndCount == 2) {
                indexNameEnd = i;
                break;
            }
            else return;
        }
        for (int i = 2; i <= indexNameEnd; i++) {
            name.append(args[i]);
            name.append(" ");
        }
        name.delete(name.length()-1,name.length());
        Person person = allPeople.get(id);
        person.setBirthDay(bd);
        person.setName(name.toString());
        person.setSex(sex);

    }
    public static void deletePerson(String[] args){
        if(args.length < 1) return;
        int id = Integer.parseInt(args[1]);
        if (id > allPeople.size()) return;
        allPeople.remove(id);

    }
    public static void showPerson(String[] args){
        if(args.length < 1) return;
        int id = Integer.parseInt(args[1]);
        if (id > allPeople.size()) return;

        SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy",Locale.ENGLISH);
        Person person = allPeople.get(id);
        System.out.println(person.getName()+ " "+sexToString(person.getSex())+" "+ format.format(person.getBirthDay()));
    }
}

уже даже и с именем в несколько слов пробовал, ни в какую…

level17.lesson10.bonus01

Тестил задачу — выполняются все условия, но тестирование не проходит. Натолкните на ошибку, плиз:)

public class Solution
{
    public static List<Person> allPeople = new ArrayList<Person>();
    public static SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
    public static SimpleDateFormat format1 = 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)
    {
        //start here - начни тут
        if (args.length > 0)
        {
            if (args[0].equals("-c"))
            {

                createPerson(args[1], args[2], args[3]);
            }
            if (args[0].equals("-u"))
            {

                updatePerson(args[1], args[2], args[3], args[4]);

            }
            if (args[0].equals("-d"))
            {

                deletePerson(args[1]);

            }
            if (args[0].equals("-i"))
            {

                infoPerson(args[1]);

            }
        }
    }

    public static void createPerson(String name, String sex, String bd)
    {
        Date date;
        Person person = null;
        try
        {
            if (!name.isEmpty() && !bd.isEmpty())
            {
                date = format.parse(bd);

                if (sex.equals("м"))
                {
                    person = Person.createMale(name, date);
                } else if (sex.equals("ж"))
                {
                    person = Person.createFemale(name, date);
                }
            }
            allPeople.add(person);
            System.out.println(allPeople.indexOf(person));
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }
    }

    public static void updatePerson(String id, String name, String sex, String bd)
    {
        int Id = Integer.parseInt(id);
        try
        {
            if (Id < allPeople.size())
            {
                Person person = allPeople.get(Id);
                if (!name.isEmpty())
                {
                    person.setName(name);
                }
                if (sex.equals("м"))
                {
                    person.setSex(Sex.MALE);
                } else return;
                if (sex.equals("ж"))
                {
                    person.setSex(Sex.FEMALE);
                } else return;
                if (!bd.isEmpty())
                {
                    Date date = format.parse(bd);
                    person.setBirthDay(date);
                } else return;
                allPeople.set(Id, person);
            }
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }
    }

    public static void deletePerson(String id)
    {
        Person person = null;
        int Id = Integer.parseInt(id);
        if (Id < allPeople.size())
        {
            person = allPeople.get(Id);
        }
        allPeople.remove(person);
    }

    public static void infoPerson(String id)
    {
        int Id = Integer.parseInt(id);
        if (Id < allPeople.size())
        {
            Person person = allPeople.get(Id);
            String sex;
            if (person.getSex().equals(Sex.MALE))
            {
                sex = "м";
            } else sex = "ж";
            System.out.println(person.getName() + " " + sex + " " + format1.format(person.getBirthDay()));
        }
    }
  • ,

level17.lesson10.home01;

package com.javarush.test.level17.lesson10.home01;
import java.util.*;

/* Общий список
1. Изменить класс Solution так, чтобы он стал списком. (Необходимо реализовать интерфейс java.util.List).
2. Список Solution должен работать только с целыми числами Long.
3. Воспользуйтесь полем original.
4. Список будет использоваться нитями, поэтому позаботьтесь, чтобы все методы были синхронизированы.
*/

public class Solution implements List<Long>{
    private ArrayList<Long> original = new ArrayList<Long>();

    @Override
    public synchronized int size()
    {
        return original.size();
    }

    @Override
    public synchronized boolean isEmpty()
    {
        return original.isEmpty();
    }

    @Override
    public synchronized boolean contains(Object o)
    {
        return original.contains(o);
    }

    @Override
    public synchronized Iterator iterator()
    {
        return original.iterator();
    }

    @Override
    public synchronized Object[] toArray()
    {
        return original.toArray();
    }

    @Override
    public synchronized <T> T[] toArray(T[] a)
    {
        return original.toArray(a);
    }

    @Override
    public synchronized boolean add(Long o)
    {
        return original.add(o);
    }

    @Override
    public synchronized boolean remove(Object o)
    {
        return original.remove(o);
    }

    @Override
    public synchronized boolean containsAll(Collection c)
    {
        return original.contains©;
    }

    @Override
    public synchronized boolean addAll(Collection c)
    {
        return original.addAll©;
    }

    @Override
    public synchronized boolean addAll(int index, Collection c)
    {
        return original.addAll(index, c);
    }

    @Override
    public synchronized boolean removeAll(Collection c)
    {
        return original.removeAll©;
    }

    @Override
    public synchronized boolean retainAll(Collection c)
    {
        return original.retainAll©;
    }

    @Override
    public synchronized void clear()
    {
        original.clear();
    }

    @Override
    public synchronized Long get(int index)
    {
        return original.get(index);
    }

    @Override
    public synchronized Long set(int index, Long element)
    {
        return original.set(index, element);
    }

    @Override
    public synchronized void add(int index, Long element)
    {
        original.add(index, element);
    }

    @Override
    public synchronized Long remove(int index)
    {
        return original.remove(index);
    }

    @Override
    public synchronized int indexOf(Object o)
    {
        return original.indexOf(o);
    }

    @Override
    public synchronized int lastIndexOf(Object o)
    {
        return original.lastIndexOf(o);
    }

    @Override
    public synchronized ListIterator listIterator()
    {
        return original.listIterator();
    }

    @Override
    public synchronized ListIterator listIterator(int index)
    {
        return original.listIterator(index);
    }

    @Override
    public synchronized List subList(int fromIndex, int toIndex)
    {
        return original.subList(fromIndex, toIndex);
    }
}


Не проходит тестирование. Хотя компилятор ни где не ругается. Не пойму где ошибка.
  • ,

level17.lesson10.bonus01

Коллеги, I need help!
Долблюсь с задачей целый день, но где ошибка не вижу, проверял со всеми аргументами дебаггером — косяков не нашел:


package com.javarush.test.level17.lesson10.bonus01;

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
CrUD - Create, Update, Delete
Программа запускается с одним из следующих наборов параметров:
-c name sex bd
-u id name sex bd
-d id
-i id
Значения параметров:
name - имя, String
sex - пол, "м" или "ж", одна буква
bd - дата рождения в следующем формате 15/04/1990
-с  - добавляет человека с заданными параметрами в конец allPeople, выводит id (index) на экран
-u  - обновляет данные человека с данным id
-d  - производит логическое удаление человека с id
-i  - выводит на экран информацию о человеке с id: name sex (м/ж) bd (формат 15-Apr-1990)

id соответствует индексу в списке
Все люди должны храниться в allPeople
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat

Пример параметров: -c Миронов м 15/04/1990
*/

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) {
        if (args.length > 0) {
            if (args[0].equals("-c")) {
                if (args.length == 4) {
                    createPerson(args[1], args[2], args[3]);
                }

            } else if (args[0].equals("-u")) {
                if (args.length == 5) {
                    updatePerson(args[1], args[2], args[3], args[4]);
                }

            } else if (args[0].equals("-d")) {
                if (args.length == 2) {
                    deletePerson(args[1]);
                }

            } else if (args[0].equals("-i")) {
                if (args.length == 2) {
                    infoPerson(args[1]);
                }

            }
        }
    }

    public static void createPerson(String name, String sex, String bd) {
        SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
        Date date = null;
        try {
            date = format1.parse(bd);
        } catch (ParseException e) { }
        Person person = null;
        if (sex.equals("м")) {
            person.createMale(name, date);
        } else if (sex.equals("ж")) {
            person.createFemale(name, date);
        }
        allPeople.add(person);
        System.out.println(allPeople.indexOf(person));

    }

    public static void updatePerson(String id, String name, String sex, String bd) {
        int iid = Integer.parseInt(id);
        if (iid < allPeople.size()) {
            Person person = allPeople.get(iid);
            person.setName(name);
            if (sex.equals("м")) {
                person.setSex(Sex.MALE);
            } else if (sex.equals("ж")) {
                person.setSex(Sex.FEMALE);
            }
            SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
            Date date = null;
            try {
                date = format1.parse(bd);
                person.setBirthDay(date);
            } catch (ParseException e) {

            }
        }

    }

    public static void deletePerson(String id) {
        int iid = Integer.parseInt(id);
        if (iid < allPeople.size()) {
            Person person = allPeople.get(iid);
            person.setBirthDay(null);
        }

    }

    public static void infoPerson(String id) {
        int iid = Integer.parseInt(id);
        SimpleDateFormat format2 = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
        if (iid < allPeople.size()) {
            Person person = allPeople.get(iid);
            String date = format2.format(person.getBirthDay());
            String sex = null;
            if (person.getSex().equals(Sex.MALE)) {
                sex = "м";
            } else sex = "ж";
            System.out.println(person.getName() + " " + sex + " " + date);
        }

    }
}

level17.lesson10.home06

package com.javarush.test.level17.lesson10.home06;

/* Глажка
И снова быт...
Поставьте один synchronized, чтобы diana и igor гладили по-очереди, ведь утюг всего один!
*/

public class Solution {
    public static void main(String[] args) {
        Person diana = new Person("Diana");
        Person igor = new Person("Igor");
    }

    public static class Person extends Thread { //Человек

        public Person(String name) {
            super(name);
            start();
        }

        @Override
        public void run() {
            Iron iron = takeIron();
            Clothes clothes = takeClothes();
            ironing(iron, clothes);
            returnIron();
        }

        protected Iron takeIron() {
            System.out.println("Taking an Iron");
            return new Iron();
        }

        protected Iron returnIron() {
            System.out.println("Returning the Iron");
            return new Iron();
        }

        protected Clothes takeClothes() {
            return new Clothes("T-shirt");
        }

        protected void ironing(Iron iron, Clothes clothes) {
            System.out.println(getName() + "'s ironing the " + clothes.name);
        }
    }

    public static class Iron {
    } //Утюг

    public static class Clothes {//Одежда
        String name;

        public Clothes(String name) {
            this.name = name;
        }
    }
}