• ,

task20.task2002 | level20.lesson02.task02 Не могу до конца понять условие

Здравствуйте, господа форумчане. Долго уже ломаю голову, над тем, как же решить эту задачу. То есть код работает, ошибки не выдает, но не проходит проверку. А дело состоит в том, что я не могу до конца осмыслить, что от меня требует условие, а именно:

Читаем и пишем в файл: JavaRush
Реализуйте логику записи в файл и чтения из файла для класса JavaRush.
В файле your_file_name.tmp может быть несколько объектов JavaRush.
Метод main реализован только для вас и не участвует в тестировании.

То что выделено жирным, для меня загадка. То есть я не понимаю, что под этим подразумевается. Можете обьяснить, что от меня требуется и что меняет данное условие в save/load методах?

Код Solution класса:

package com.javarush.task.task20.task2002;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/* 
Читаем и пишем в файл: JavaRush
*/
public class Solution {
    public static void main(String[] args) {
        //you can find your_file_name.tmp in your TMP directory or fix outputStream/inputStream according to your real file location
        //вы можете найти your_file_name.tmp в папке TMP или исправьте outputStream/inputStream в соответствии с путем к вашему реальному файлу
        try {
            File your_file_name = File.createTempFile("your_file_name", null);
            OutputStream outputStream = new FileOutputStream("/Users/mac/Documents/JavaRushTasks/2.JavaCore/src/com/javarush/task/task20/task2002/File1");
            InputStream inputStream = new FileInputStream("/Users/mac/Documents/JavaRushTasks/2.JavaCore/src/com/javarush/task/task20/task2002/File1");

            JavaRush javaRush = new JavaRush();
            //initialize users field for the javaRush object here - инициализируйте поле users для объекта javaRush тут
            User user = new User();
            user.setFirstName("Vangelis");
            user.setLastName("Kondratevi");
            user.setBirthDate(new Date());
            user.setMale(true);
            user.setCountry(User.Country.UKRAINE);
            javaRush.users.add(user);

            javaRush.save(outputStream);
            outputStream.flush();

            JavaRush javaRush1 = new JavaRush();
            //initialize users field for the javaRush object here - инициализируйте поле users для объекта javaRush тут
            User user1 = new User();
            user1.setFirstName("Andrei");
            user1.setLastName("Karpovich");
            user1.setBirthDate(new Date());
            user1.setMale(true);
            user1.setCountry(User.Country.OTHER);
            javaRush1.users.add(user1);

            javaRush1.save(outputStream);
            outputStream.flush();

            JavaRush loadedObject = new JavaRush();
            loadedObject.load(inputStream);
            //check here that javaRush object equals to loadedObject object - проверьте тут, что javaRush и loadedObject равны

            outputStream.close();
            inputStream.close();

        } catch (IOException e) {
            //e.printStackTrace();
            System.out.println("Oops, something wrong with my file");
        } catch (Exception e) {
            //e.printStackTrace();
            System.out.println("Oops, something wrong with save/load method");
        }
    }

    public static class JavaRush {
        public List<User> users = new ArrayList<>();
        private static int objCount = 0;

        public void save(OutputStream outputStream) throws Exception {
            //implement this method - реализуйте этот метод
            PrintWriter writer = new PrintWriter(outputStream);
            String areUsersPresent = users != null ? "yes" : "no";
            writer.println(areUsersPresent);
            if(users != null) {
                int size = users.size();
                writer.println(size);
                for (int i = 0; i < size; i++) {
                    User user = users.get(i);
                    String firstName = user.getFirstName();
                    writer.println(firstName);
                    String lastName = user.getLastName();
                    writer.println(lastName);
                    String bd = new SimpleDateFormat("dd-MM-yyyy").format(user.getBirthDate());
                    writer.println(bd);
                    String isMale = user.isMale() ? "yes" : "no";
                    writer.println(isMale);
                    String country = user.getCountry().getDisplayedName();
                    writer.println(country);
                }
            }
            writer.flush();
        }

        public void load(InputStream inputStream) throws Exception {
            //implement this method - реализуйте этот метод
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String areUsersPresent = reader.readLine();
            if(areUsersPresent.equals("yes")){
                int size = Integer.parseInt(reader.readLine());
                if(size>0){
                    for (int i = 0; i < size; i++) {
                        User user = new User();
                        String firstName = reader.readLine();
                        user.setFirstName(firstName);

                        String lastname = reader.readLine();
                        user.setLastName(lastname);

                        Date bd = new SimpleDateFormat("dd-MM-yyyy").parse(reader.readLine());
                        user.setBirthDate(bd);

                        boolean isMale = reader.readLine().equals("yes");
                        user.setMale(isMale);

                        String countryStr = reader.readLine();
                        User.Country country;
                        if(countryStr.equals("Ukraine")){
                            country = User.Country.UKRAINE;
                        } else if(countryStr.equals("Russia")){
                            country = User.Country.RUSSIA;
                        } else {
                            country = User.Country.OTHER;
                        }
                        user.setCountry(country);
                        users.add(user);
                    }
                }
            }
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            JavaRush javaRush = (JavaRush) o;

            return users != null ? users.equals(javaRush.users) : javaRush.users == null;

        }

        @Override
        public int hashCode() {
            return users != null ? users.hashCode() : 0;
        }
    }
}


Код User класса:

package com.javarush.task.task20.task2002;

import java.util.Date;

public class User {
    private String firstName;
    private String lastName;
    private Date birthDate;
    private boolean isMale;
    private Country country;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Date getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(Date birthDate) {
        this.birthDate = birthDate;
    }

    public boolean isMale() {
        return isMale;
    }

    public void setMale(boolean male) {
        isMale = male;
    }

    public Country getCountry() {
        return country;
    }

    public void setCountry(Country country) {
        this.country = country;
    }

    public static enum Country {
        UKRAINE("Ukraine"),
        RUSSIA("Russia"),
        OTHER("Other");

        private String name;

        private Country(String name) {
            this.name = name;
        }

        public String getDisplayedName() {
            return this.name;
        }
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        User user = (User) o;

        if (isMale != user.isMale) return false;
        if (firstName != null ? !firstName.equals(user.firstName) : user.firstName != null) return false;
        if (lastName != null ? !lastName.equals(user.lastName) : user.lastName != null) return false;
        if (birthDate != null ? !birthDate.equals(user.birthDate) : user.birthDate != null) return false;
        return country == user.country;

    }

    @Override
    public int hashCode() {
        int result = firstName != null ? firstName.hashCode() : 0;
        result = 31 * result + (lastName != null ? lastName.hashCode() : 0);
        result = 31 * result + (birthDate != null ? birthDate.hashCode() : 0);
        result = 31 * result + (isMale ? 1 : 0);
        result = 31 * result + (country != null ? country.hashCode() : 0);
        return result;
    }
}

package com.javarush.task.task15.task1527;

package com.javarush.task.task15.task1527;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/* Парсер реквестов
Считать с консоли URl ссылку.
Вывести на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15).
URL содержит минимум 1 параметр.
Если присутствует параметр obj, то передать его значение в нужный метод alert.
alert(double value) — для чисел (дробные числа разделяются точкой)
alert(String value) — для строк
Обрати внимание на то, что метод alert необходимо вызывать ПОСЛЕ вывода списка всех параметров на экран.

Пример 1

Ввод:
http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo

Вывод:
lvl view name

Пример 2

Ввод:
http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo

Вывод:
obj name
double 3.14
*/

public class Solution {
    public static void main(String[] args) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s =reader.readLine();
        char[] chars = s.toCharArray();
        s="";
for (int i=0;i<chars.length;i++){
    if (String.valueOf(chars[i]).equals("?")){
        for (int j =i+1;j<chars.length;j++){
            s+=String.valueOf(chars[j]);
        }
    }
}

        Pattern p1 = Pattern.compile("(\\w+)=\\w+&(\\w+)&(\\w+)=\\w+");
        Matcher m1 = p1.matcher(s);

        m1.matches();
        if ( m1.matches()) {
            for (int i = 1; i < 4; i++) {
                System.out.print(m1.group(i) + " ");
            }
        }
        if (!m1.matches()){
            Pattern p = Pattern.compile("(\\w+)=(\\w+.\\w+)&(\\w+)=\\w+");
            Matcher m = p.matcher(s);
            m.matches();
                System.out.println(m.group(1) +" "+ m.group(3));

            try {
                alert(Double.parseDouble(m.group(2)));
            }
            catch (Exception e){
                alert(m.group(2));
            }
        }

    }

    public static void alert(double value) {
        System.out.println("double " + value);
    }

    public static void alert(String value) {
        System.out.println("String " + value);
    }
}

Пишет что программа должна считывать только одну строку она и считывает
а остальное все в порядке
Программа должна выводить данные на экран в соответствии с условием.
Программа должна вызывать метод alert с параметром double в случае, если значение параметра obj может быть корректно преобразовано в число типа double.
Программа должна вызывать метод alert с параметром String в случае, если значение параметра obj НЕ может быть корректно преобразовано в число типа double.

У меня у одного не работает поиск кириллических имен в рейтинге?

Уже как пару месяцев не работает поиск кириллических имен в рейтинге на javarush. С латиницей таких проблем нет, все работает. Данная проблема только у меня или она в данный момент у всех? Раньше все работало замечательно. Поменять имя на латиницу, если регистрировался через соцсети, не представляется возможным.
Как можно решить данную проблему?

Проблема в задаче level19.lesson05.task02

package com.javarush.test.level19.lesson05.task02;

/* Считаем слово
Считать с консоли имя файла.
Вывести в консоль количество слов "world", которые встречаются в файле.
Закрыть поток ввода.
*/

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine();
        FileReader fileReader = new FileReader(fileName);
        String s = "";
        int count = 0;
        while(fileReader.ready()){
            int data = fileReader.read();
            s+= (char) data;
            if (s.contains("world")) {
                count++;
                s="";
            }
        }
        System.out.println(count);
        fileReader.close();
        reader.close();
    }
}

Задача не проходит тест на сервере.
Почему этот вариант реализации не имеет место быть???
P.S.
По моему этот вариант самый простой.
  • ,

Не проходит тестирование level17.lesson10.bonus02 [РЕШЕНО]

CRUD 2
CrUD Batch — multiple Creation, Updates, Deletion
!!! РЕКОМЕНДУЕТСЯ выполнить level17.lesson10.bonus01 перед этой задачей!!!

Программа запускается с одним из следующих наборов параметров:
-c name1 sex1 bd1 name2 sex2 bd2…
-u id1 name1 sex1 bd1 id2 name2 sex2 bd2…
-d id1 id2 id3 id4…
-i id1 id2 id3 id4…
Значения параметров:
name — имя, String
sex — пол, «м» или «ж», одна буква
bd — дата рождения в следующем формате 15/04/1990
-с — добавляет всех людей с заданными параметрами в конец allPeople, выводит id (index) на экран в соответствующем порядке
-u — обновляет соответствующие данные людей с заданными id
-d — производит логическое удаление всех людей с заданными id
-i — выводит на экран информацию о всех людях с заданными id: name sex bd

id соответствует индексу в списке
Формат вывода даты рождения 15-Apr-1990
Все люди должны храниться в allPeople
Порядок вывода данных соответствует вводу данных
Обеспечить корректную работу с данными для множества нитей (чтоб не было затирания данных)
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat

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[0].equals("-c")) {
            create(args);
        }

        if (args[0].equals("-u")) {
            update(args);
        }

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

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


    private static synchronized void info(String[] args) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);

        for (int i = 1; i < args.length; i++) {
            if (allPeople.get(Integer.parseInt(args[i])).getSex().equals(Sex.MALE)) {
                System.out.println(allPeople.get(Integer.parseInt(args[i])).getName() +
                        " м " + simpleDateFormat.format(allPeople.get(Integer.parseInt(args[i])).getBirthDay()));
            } else if (allPeople.get(Integer.parseInt(args[i])).getSex().equals(Sex.FEMALE)) {
                System.out.println(allPeople.get(Integer.parseInt(args[i])).getName() +
                        " ж " + simpleDateFormat.format(allPeople.get(Integer.parseInt(args[i])).getBirthDay()));
            }
        }
    }

    private static synchronized void delete(String[] args) {
        for (int i = 1; i < args.length; i++) {
            allPeople.get(Integer.parseInt(args[i])).setBirthDay(null);
            allPeople.get(Integer.parseInt(args[i])).setName(null);
            allPeople.get(Integer.parseInt(args[i])).setSex(null);
        }
    }

    private static synchronized void update(String[] args) {
        for (int i = 1; i < args.length; i += 4) {
            allPeople.get(Integer.parseInt(args[i])).setBirthDay(new Date(args[i + 3]));
            allPeople.get(Integer.parseInt(args[i])).setName(args[i + 1]);

            if (args[i + 2].equals("м")) {
                allPeople.get(Integer.parseInt(args[i])).setSex(Sex.MALE);
            } else if (args[i + 2].equals("ж")) {
                allPeople.get(Integer.parseInt(args[i])).setSex(Sex.FEMALE);
            }
        }
    }

    private static synchronized void create(String[] args) {
        for (int i = 1; i < args.length; i += 3) {
            if (args[i + 1].equals("м")) {
                Person male = Person.createMale(args[i], new Date(args[i + 2]));
                allPeople.add(male);
                System.out.println(allPeople.indexOf(male));
            } else if (args[i + 1].equals("ж")) {
                Person female = Person.createFemale(args[i], new Date(args[i + 2]));
                allPeople.add(female);
                System.out.println(allPeople.indexOf(female));
            }
        }
    }
}
  • ,

level06.lesson11.home04

Доброго времени суток! Столкнулся с такой проблемой — код был принят сервером, но не проходит в IDEA, подскажите куда «копать»?
Код:

public class Solution
{
    public static int step;

    public static void main(String[] args) {
        method1();
    }

    public static void method1() {
        method2();
    }


    public static void method2() {
        new Solution().method3();
    }

    public void method3() {
        method4();
    }

    public void method4() {
        step++;
        for (StackTraceElement element : Thread.currentThread().getStackTrace())
            System.out.println(element);
        if (step > 1) return;
        main(null);
    }
}


Данные из консоли запуска:

«C:\Program Files\Java\jdk1.7.0_65\bin\java» -Didea.launcher.port=7534 "-Didea.launcher.bin.path=C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 13.1.3\bin" -Dfile.encoding=UTF-8 -classpath «C:\Program Files\Java\jdk1.7.0_65\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\jfxrt.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\ext\access-bridge.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.7.0_65\jre\lib\ext\zipfs.jar;E:\JavaRush\JavaRushHomeWork\out\production\JavaRushHomeWork;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 13.1.3\lib\idea_rt.jar» com.intellij.rt.execution.application.AppMain com.javarush.test.level06.lesson11.home04.Solution
java.lang.Thread.getStackTrace(Thread.java:1589)
com.javarush.test.level06.lesson11.home04.Solution.method4(Solution.java:30)
com.javarush.test.level06.lesson11.home04.Solution.method3(Solution.java:25)
com.javarush.test.level06.lesson11.home04.Solution.method2(Solution.java:21)
com.javarush.test.level06.lesson11.home04.Solution.method1(Solution.java:16)
com.javarush.test.level06.lesson11.home04.Solution.main(Solution.java:12)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
java.lang.Thread.getStackTrace(Thread.java:1589)
com.javarush.test.level06.lesson11.home04.Solution.method4(Solution.java:30)
com.javarush.test.level06.lesson11.home04.Solution.method3(Solution.java:25)
com.javarush.test.level06.lesson11.home04.Solution.method2(Solution.java:21)
com.javarush.test.level06.lesson11.home04.Solution.method1(Solution.java:16)
com.javarush.test.level06.lesson11.home04.Solution.main(Solution.java:12)
com.javarush.test.level06.lesson11.home04.Solution.method4(Solution.java:33)
com.javarush.test.level06.lesson11.home04.Solution.method3(Solution.java:25)
com.javarush.test.level06.lesson11.home04.Solution.method2(Solution.java:21)
com.javarush.test.level06.lesson11.home04.Solution.method1(Solution.java:16)
com.javarush.test.level06.lesson11.home04.Solution.main(Solution.java:12)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Process finished with exit code 0

На ум приходит только идея что старые версии StackTraceElement или getStackTrace, но хотелось бы понять точно, а не довольствоваться догадками…