level09.lesson11.bonus01 - "Программа работал слишком долго и была закрыта"

Всем привет!

Задание: Нужно исправить программу, чтобы компилировалась и работала
Задача: Программа вводит два имени файла. И копирует первый файл на место заданное вторым именем.

Как только не пробовал корректировать. Либо не проходит тестирование, либо «Программа работал слишком долго и была закрыта». Ниже привожу вариант приводящий к «Программа работал слишком долго и была закрыта».


public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String sourceFileName = reader.readLine();
        String destinationFileName = reader.readLine();

        java.io.FileInputStream fileInputStream = new java.io.FileInputStream(sourceFileName);
        java.io.FileOutputStream fileOutputStream = new java.io.FileOutputStream(destinationFileName);

        int count = 0;
        while (fileInputStream.available()>0);
        {
            int data = fileInputStream.read();
            fileOutputStream.write(data);
            count++;
        }

        System.out.println("Скопировано байт " + count);

        fileInputStream.close();
        fileOutputStream.close();
    }
}


Подскажите, какое решение этой задачи у вас прошло тестирование.

level08.lesson11.bonus01 с ума сойдешь, работает как надо, с патчами все ок выводит все как надо

/* Номер месяца
Программа вводит с клавиатуры имя месяца и выводит его номер на экран в виде: «May is 5 month».
Используйте коллекции.
*/

public class Solution
{
public static void main(String[] args) throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String str = reader.readLine();
String strDta = (str + " 1 2013");
Date dta = new Date(strDta);

Map<Integer, String> list = new HashMap<Integer, String>();
list.put(0, «January»);
list.put(1, «February»);
list.put(2, «March»);
list.put(3, «April»);
list.put(4, «May»);
list.put(5, «June»);
list.put(6, «July»);
list.put(7, «August»);
list.put(8, «September»);
list.put(9, «October»);
list.put(10, «November»);
list.put(11, «December»);
System.out.println(list.get(dta.getMonth()) + " is " + (dta.getMonth()+1) + " month");
}

}
  • ,

level35.lesson10.bonus01

Решил так, но сервер не принимает.
Не могу понять, может требовалось исключительно через свою реализацию ClassLoader-a решать?

* ClassLoader — что это такое?
Реализуйте логику метода getAllAnimals.
Аргумент метода pathToAnimals — это абсолютный путь к директории, в которой хранятся скомпилированные классы.
Путь не обязательно содержит / в конце.
НЕ все классы наследуются от интерфейса Animal.
НЕ все классы имеют публичный конструктор без параметров.
Только для классов, которые наследуются от Animal и имеют публичный конструктор без параметров, — создать по одному объекту.
Добавить созданные объекты в результирующий сет и вернуть.
Метод main не участвует в тестировании.
*/


public static void main(String[] args)
    {
        Set<? extends Animal> allAnimals = getAllAnimals("C://pathToClasses/");
        System.out.println(allAnimals);
    }



public static Set<? extends Animal> getAllAnimals(String pathToAnimals)
    {
        Set<Animal> animals = new HashSet<>();
        URLClassLoader urlClassLoader = null;
        if (!pathToAnimals.endsWith("/"))
        {
            pathToAnimals = pathToAnimals + "/";
        }

        try
        {   URL path = new File(pathToAnimals).toURI().toURL();
            urlClassLoader = new URLClassLoader(new URL[]{path});
        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        }


        File file = new File(pathToAnimals);
        File[] listFiles = file.listFiles(new FilenameFilter()
        {
            @Override
            public boolean accept(File dir, String name)
            {
                return name.endsWith(".class");
            }
        });
        for (File fileName : listFiles){
            try
            {

                String shortName = fileName.getName().substring(0,fileName.getName().length()-6);
                Class clz = urlClassLoader.loadClass(shortName);
                Class[] classes = clz.getInterfaces();

                for(Class interfaces : classes){
                    if(interfaces.equals(Animal.class)){
                        Constructor[] constructors = clz.getConstructors();
                        for (Constructor c : constructors)
                        {
                            if(!Modifier.isAbstract(clz.getModifiers()) && Modifier.isPublic(c.getModifiers()) && c.getParameterTypes().length==0 )
                            {
                               animals.add((Animal)clz.newInstance());
                            }
                        }
                    }
                }

            }
            catch (ClassNotFoundException e)
            {
                e.printStackTrace();
            }
            catch (InstantiationException e)
            {
                e.printStackTrace();
            }
            catch (IllegalAccessException e)
            {
                e.printStackTrace();
            }
        }


            return animals;
    }


UPD:
1.Все таки, ответьте, классы лежат в папке и имеют package com.javarush.test.level35.lesson10.bonus01 или его не имеют вовсе?
2. Надо решать через свою реализацию ClassLoader-а или URLClassLoader сойдет?

level33.lesson10.bonus01

Уже недели 2 бьюсь над ней и никак не проходит тесты на сервере, хоть все тесты в комментариях людей в соседнем топике, и мои собственным безумные CDATA файлы, комментирует то что нужно, пожалуйста помогите: с
решение не очень красивое и без w3c, которым кстати было бы круто научится пользоваться :)
вот код:

   public static String toXmlWithComment(Object obj, String tagName, String comment) {

        try
        {
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            StringWriter writer = new StringWriter();
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            marshaller.marshal(obj, writer);
//            writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" +
//                    "<shop>\n" +
//                    "    <goods>\n" +
//                    "        <name>S1</name>\n" +
//                    "        <![CDATA[<name>S2</name>]]>\n" +
//                    "    </goods>\n" +
//                    "    <count>12</count>\n" +
//                    "    <name>123.4</name><![CDATA[\n" +
//                    "    <name>String1</name>\n" +
//                    "    <name>String2</name>]]>\n" +
//                    "    <name>String3</name>\n" +
//                    "    <![CDATA[<name>String4</name>]]>\n" +
//                    "    <name>String5</name>\n" +
//                    "</shop>");

            String xml = writer.toString();
            String commentPut = "<!--"+comment+"-->";
            String tag = "<"+tagName;

            //Создаю регулярку для поиска CDATA
            Pattern pattern = Pattern.compile("(<!\\[CDATA\\[(.|\n)*?]]>)");
            Matcher matcher = pattern.matcher(xml);
            //Все найденные CDATA кладу в лист
            List<String> cdatas = new ArrayList<>();
            while (matcher.find()){
                cdatas.add(matcher.group());
            }
            //Заменяю все CDATA на другой тег
            xml = (xml.replaceAll(pattern.pattern(),"<URURU/>"));

            //ставлю комментарии в xml в котором нету CDATA и есть URURU teg
            List<String> list = new ArrayList<>(Arrays.asList(xml.split("\n")));
            List<String> copy = new ArrayList<>(list);
            for(int i =0;i<copy.size();i++){
                String s = copy.get(i);
                if(s.contains(tag)){
                    int count = spaceCount(s);
                    for(int j =0;j<count;j++){
                       commentPut = " "+commentPut;
                    }
                    list.set(i,commentPut+"\n"+s);
                    commentPut = commentPut.trim();
                }

            }
            //делаю новый xml который уже с комментами
            StringBuilder comments = new StringBuilder();
            for(String elem : list){
                comments.append(elem+"\n");
            }
            xml = comments.toString();


            //заменяю все URURU обратно на CDATA
             List<String> ururu = new ArrayList<>(Arrays.asList(xml.split("<URURU/>")));
            for(int i =0;i<cdatas.size();i++){
                String s = ururu.get(i);
                s+=cdatas.get(i);
                ururu.set(i,s);
            }

            //Делаю финальный xml
            StringBuilder result = new StringBuilder();
            for(String cdata : ururu)
            result.append(cdata);


        return result.toString().replace("standalone=\"yes\"","standalone=\"no\"");

        }
        catch (JAXBException e)
        {
            e.printStackTrace();
            return "";
        }
    }
    //штука для счета пробелов
    public static int spaceCount(String word){
        word = word.substring(0,word.indexOf("<"));
        int count = 0;
        char[] array = word.toCharArray();
        for(Character charc : array){
            if(charc == ' ')count++;
        }
        return count;
    }
  • ,

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

    }
}

level13.lesson11.bonus01;

/* Сортировка четных чисел из файла
1. Ввести имя файла с консоли.
2. Прочитать из него набор чисел.
3. Вывести на консоль только четные, отсортированные по возрастанию.
Пример ввода:
5
8
11
3
2
10
Пример вывода:
2
8
10
*/

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader( new InputStreamReader(System.in));
        InputStream in = new FileInputStream(reader.readLine());
        List<Integer> list = new ArrayList<Integer>();

        while (in.available() > 0){
            int num = Integer.parseInt(String.valueOf(in.read()));
            if (num % 2 == 0){
                list.add(num);
            }
        }


И так и сяк, но не могу понять. Как при чтении из файла определить значение и перевести его в int? Подскажите, кто что использовал для этого?

level08.lesson11.bonus01

/* Номер месяца
Программа вводит с клавиатуры имя месяца и выводит его номер на экран в виде: «May is 5 month».
*/

public class Solution
{
public static void main(String[] args) throws IOException
{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String s=reader.readLine();
Date d=new Date(s+" 1 1999");
System.out.println(s +" is " + (d.getMonth()+1) + " month.");
}

}

Все работает, но тестирование не проходит. что не так с кодом?
  • ,

level18.lesson10.bonus01

Не нашел топика по такой задаче. Есть подозрения что неправильно реализовал механизм шифрования, подскажите, пожалуйста, какая методика шифрования предполагается?

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

/* Шифровка
Придумать механизм шифровки/дешифровки

Программа запускается с одним из следующих наборов параметров:
-e fileName fileOutputName
-d fileName fileOutputName
где
fileName - имя файла, который необходимо зашифровать/расшифровать
fileOutputName - имя файла, куда необходимо записать результат шифрования/дешифрования
-e - ключ указывает, что необходимо зашифровать данные
-d - ключ указывает, что необходимо расшифровать данные
*/