• ,

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;
    }
}
  • ,

Задача level17.lesson04.task01.

Что не так, почему не принимает?


/* Синхронизированные заметки
1. Класс Note будет использоваться нитями. Поэтому сделай так, чтобы обращения
к листу notes блокировали мютекс notes, не this
2. Все System.out.println не должны быть заблокированы (синхронизированы),
т.е. не должны находиться в блоке synchronized
*/

public class Solution {
    public static class Note {

        private final List<String> notes = new ArrayList<String>();

        public synchronized List<String> getNotes()
        {
            return notes;
        }

        public void addNote(int index, String note) {
            System.out.println("Сейчас будет добавлена заметка [" + note + "] На позицию " + index);
            getNotes().add(index, note);
            System.out.println("Уже добавлена заметка [" + note + "]");
        }

        public void removeNote(int index) {
            System.out.println("Сейчас будет удалена заметка с позиции " + index);
            String note = getNotes().remove(index);
            System.out.println("Уже удалена заметка [" + note + "] с позиции " + index);
        }
    }
}
  • ,

Максимальное и минимальное числа в массиве

Я далеко не новичок в программировании и задачи пока жутко легкие, но порой правильные решения не проходят.

Задача: Создать массив на 20 чисел. Заполнить его числами с клавиатуры. Найти максимальное и минимальное числа в массиве.
Вывести на экран максимальное и минимальное числа через пробел.

  • ,

level05.lesson05.task02

В чем проблема, ребят ?(
Программа не проходит тестирование


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

/* Реализовать метод fight
Реализовать метод boolean fight(Cat anotherCat):
реализовать механизм драки котов в зависимости от их веса, возраста и силы.
Зависимость придумать самому. Метод должен определять, выиграли ли мы (this) бой или нет,
т.е. возвращать true, если выиграли и false - если нет.
Должно выполняться условие:
если cat1.fight(cat2) = true , то cat2.fight(cat1) = false
*/

public class Cat {
    public String name;
    public int age;
    public int weight;
    public int strength;

    public Cat() {
        Cat cat1 = new Cat();
        Cat cat2 = new Cat();
        cat1.name="Vaska";
        cat1.age=18;
        cat1.weight=70;
        cat1.strength=56;
        cat2.name="Timoha";
        cat2.age=23;
        cat2.weight=78;
        cat2.strength=60;
        cat1.fight(cat2);
    }

    public boolean fight(Cat anotherCat) {
        /* Напишите тут ваш код */
        int k1=(this.age+this.weight+this.strength);
        int k2=(anotherCat.age+anotherCat.weight+anotherCat.strength);
        return (k1>k2);
    }
}

  • ,

проблемы com.javarush.test.level06.lesson11.bonus02

Здравствуйте, долго бьюсь над этой задачей. Перечитал кучу топиков и не хотел писать, но силы окончательно покидают меня когда смотрю на эту задачу, а бросать не хочется. Укажите пожалуйста на ошибку.

package com.javarush.test.level06.lesson11.bonus02;

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

/* Нужно добавить в программу новую функциональность
Задача: У каждой кошки есть имя и кошка-мама. Создать класс, который бы описывал данную ситуацию. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран.
Новая задача: У каждой кошки есть имя, кошка-папа и кошка-мама. Изменить класс Cat так, чтобы он мог описать данную ситуацию.
Создать 6 объектов: маму, папу, сына, дочь, бабушку(мамина мама) и дедушку(папин папа).
Вывести их всех на экран в порядке: дедушка, бабушка, папа, мама, сын, дочь.

Пример ввода:
дедушка Вася
бабушка Мурка
папа Котофей
мама Василиса
сын Мурчик
дочь Пушинка

Пример вывода:
Cat name is дедушка Вася, no mother, no father
Cat name is бабушка Мурка, no mother, no father
Cat name is папа Котофей, no mother, father is дедушка Вася
Cat name is мама Василиса, mother is бабушка Мурка, no father
Cat name is сын Мурчик, mother is мама Василиса, father is папа Котофей
Cat name is дочь Пушинка, mother is мама Василиса, father is папа Котофей
*/

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

        String grandPaName = reader.readLine();
        Cat catGrandPa = new Cat(grandPaName);

        String grandMaName = reader.readLine();
        Cat catGrandMa = new Cat(grandMaName);

        String fatherName = reader.readLine();
        Cat catFather = new Cat(fatherName,  catGrandPa, null);

        String motherName = reader.readLine();
        Cat catMother = new Cat(motherName, null, catGrandMa);

        String sonName = reader.readLine();
        Cat catSon = new Cat(sonName, catFather, catMother );

        String daughterName = reader.readLine();
        Cat catDaughter = new Cat(daughterName, catFather, catMother);

        System.out.println(catGrandPa);
        System.out.println(catGrandMa);
        System.out.println(catFather);
        System.out.println(catMother);
        System.out.println(catSon);
        System.out.println(catDaughter);
    }

    public static class Cat
    {
        private String name;
        private Cat father;
        private Cat mother;

        Cat(String name)
        {
            this.name = name;
        }


        Cat(String name, Cat father, Cat mother){
            this.name = name;
            this.father = father;
            this.mother = mother;
        }

        @Override
        public String toString()
        {
            if (mother == null && father == null)
                return "Cat name is " + name + ", no mother " + ", no father";
            else if (mother == null )
                return "Cat name is " + name + ", no mother " + ", father is " + father.name;
            if ( father == null)
                return "Cat name is " + name + ", mother is " + mother.name + ", no father";
            else
                return "Cat name is " + name + ", mother is " + mother.name + ", father is " + father.name;

        }
    }

}