• ,

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());
    }
}

5 комментариев

Nullptr
  • Nullptr
  • 0
  • Комментарий отредактирован 2017-01-09 12:14:47 пользователем Nullptr
У тебя каждый раз создается новый SimpleDateFormat.
Попробуй создать его в самом начале мэйна и дальше использовать;

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
AlexAV
Логическое удаление — person.setName(null) и т.д.
Archie369
действительно, я пробовал удалять через метод .remove(), не проходило тестирование пока не заменил на .setName(null), .setSex(null), .setBirthDay(null)
Aizberg94
  • Aizberg94
  • 0
  • Комментарий отредактирован 2017-05-04 20:32:21 пользователем Aizberg94
Мне вот интересно, вы с какого уровня ети задачи решаете?! Хоть они и даются на 17ом ур. но я нихера не понял, это мало сказано. Конечно прогуглил и так далее, но там уже реч идет про сервелеты/msql. ИМХО рано задавать такие задания ибо советь не позволяет оставлять не решенными задания. Скопипастить можно с гит/гист но не для етого пришел сюда…
zzzz
Все задачи решал строго по мере дохождения до них, никакого копипаста, только google (в основном stackoverflow). К новым лекциям переходил только решив все предыдущие задачи. Аналогично поступил после перехода на новую версию. Сначала решил все новые задачи с предыдущих уровней и только затем начал двигаться дальше.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.