• ,

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

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

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 grFatherName = reader.readLine();
        String grMotherName = reader.readLine();
        String fatherName = reader.readLine();
        String motherName = reader.readLine();
        String sonName = reader.readLine();
        String daughterName = reader.readLine();


        Cat catGrFather = new Cat(grFatherName);
        Cat catGrMother = new Cat(grMotherName);
        Cat catFather = new Cat(fatherName, null, catGrFather);
        Cat catMother = new Cat(motherName, catGrMother, null);
        Cat catSon = new Cat(sonName, catMother, catFather);
        Cat catDaughter = new Cat(daughterName, catMother, catFather);


        System.out.println(catGrFather);
        System.out.println(catGrMother);
        System.out.println(catFather);
        System.out.println(catMother);
        System.out.println(catSon);
        System.out.print(catDaughter);
    }

    public static class Cat
    {
        private String name;

        private Cat mother;
        private Cat father;


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

        Cat(String name, Cat mother, Cat father)
        {
            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 && father == null)
                return "Cat name is " + name + ", mother is " + mother.name + ", no father";
            else if (mother == null && father != null)
                return  "Cat name is " + name + ", no mother" + ", father is " + father.name;
            else
                return "Cat name is " + name + ", mother is " + mother.name + ", father is " + father.name;
        }
    }


}


Выводит именно те фразы, что запрашивается в условии (проверял копировать/вставить)
  • ,

level26.lesson08.task02

/* Мудрый человек думает раз, прежде чем два раза сказать.
Все методы класса Solution должны быть потоково-безопасными.
Сделайте так, чтобы оба метода могли выполняться одновременно двумя различными трэдами.
synchronized(this) для этого не подходит, используйте другой объект для лока.
*/
  • ,

level25.lesson02.home01

public enum Column implements Columnable
{
    Customer("Customer"),
    BankName("Bank Name"),
    AccountNumber("Account Number"),
    Amount("Available Amount");

    private String columnName;

    private static int[] realOrder;

    private Column(String columnName) {
        this.columnName = columnName;
    }

    /**
     * Задает новый порядок отображения колонок, который хранится в массиве realOrder.
     * realOrder[индекс в энуме] = порядок отображения; -1, если колонка не отображается.
     *
     * @param newOrder новая последовательность колонок, в которой они будут отображаться в таблице
     * @throws IllegalArgumentException при дубликате колонки
     */
    public static void configureColumns(Column... newOrder) {
        realOrder = new int[values().length];
        for (Column column : values()) {
            realOrder[column.ordinal()] = -1;
            boolean isFound = false;

            for (int i = 0; i < newOrder.length; i++) {
                if (column == newOrder[i]) {
                    if (isFound) {
                        throw new IllegalArgumentException("Column '" + column.columnName + "' is already configured.");
                    }
                    realOrder[column.ordinal()] = i;
                    isFound = true;
                }
            }
        }
    }

    /**
     * Вычисляет и возвращает список отображаемых колонок в сконфигурированом порядке (см. метод configureColumns)
     * Используется поле realOrder.
     *
     * @return список колонок
     */
    public static List<Column> getVisibleColumns() {
        List<Column> result = new LinkedList<>();
        for (int i = 0; i < realOrder.length; i++) {
            if (realOrder[i] != -1)
                result.add(Column.values()[realOrder[i]]);
        }

        return result;
    }

    @Override
    public String getColumnName()
    {
        return columnName;
    }

    @Override
    public boolean isShown()
    {
        return realOrder[this.ordinal()] != -1;
    }

    @Override
    public void hide()
    {
         int index = this.ordinal();
         for (int i = 0; i < realOrder.length; i++) {
             if (realOrder[i] == index)
                 realOrder[i] = -1;
         }
    }
}


Вывод после Column.AccountNumber.hide();:

Account Number
Bank Name
Customer
— Bank Name
Customer

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

        Cat[] cats = new Cat[6];
        cats[0] = new Cat(reader.readLine(), null, null);
        cats[1] = new Cat(reader.readLine(), null, null);
        cats[2] = new Cat(reader.readLine(), null, cats[0]);
        cats[3] = new Cat(reader.readLine(), cats[1], null);
        cats[4] = new Cat(reader.readLine(), cats[3], cats[2]);
        cats[5] = new Cat(reader.readLine(), cats[3], cats[2]);

        for (Cat cat : cats) System.out.println(cat);

        reader.close();
    }

    public static class Cat {
        private String name;
        private Cat parentMother;
        private Cat parentFather;

        Cat(String name, Cat parentMother, Cat parentFather) {
            this.name = name;
            this.parentMother = parentMother;
            this.parentFather = parentFather;
        }

        @Override
        public String toString() {
            return "Cat name is " + name +
                    ((parentMother != null) ? ", mother is " + parentMother.name : ", no mother") +
                    ((parentFather != null) ? ", father is " + parentFather.name : ", no father");
        }
    }
}

  • ,

Задача level22.lesson09.task01

Коллеги, провел тестирование на всех вариантах, которые смог придумать. Программа отрабатывает как нужно.
Думал еще что проблема в кодировке, так как были задачи, которые не хотели приниматься без «UTF-8», но тоже в этот раз не прокатывает.
Подскажите, на каких входных данных моя программа отработает неверно, чтобы я мог дальше ее доработать, спасибо!

/*
 
/*
 Обращенные слова
В методе main с консоли считать имя файла, который содержит слова, разделенные пробелами.
Найти в тексте все пары слов, которые являются обращением друг друга. Добавить их в result.
Порядок слов first/second не влияет на тестирование.
Использовать StringBuilder.
Пример, "мор"-"ром", "трос"-"сорт"
*/

public class Solution {
    public static List<Pair> result = new LinkedList<Pair>();

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine();
        reader.close();
        BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "Windows-1251"));
        ArrayList<String> dataLine = new ArrayList<String>();
        //Записываем все слова из файла в ArrayList.
        while(in.ready()){
            dataLine.addAll(Arrays.asList((in.readLine().split(" "))));
        }
        in.close();

        for(int i = 0; i < dataLine.size(); i++)
        {
            for(int j = 0; j < dataLine.size();)
            {
                StringBuilder stringBuilder = new StringBuilder(dataLine.get(i));
                String s = stringBuilder.reverse().toString();

                //Если перевернутая строчка равна обычной строчке, сохраняем данные в result
                //уже записанные данные из dataList удаляем.
                if(dataLine.get(j).equals(s))
                {
                    Pair pair = new Pair();
                    pair.first = dataLine.get(j);
                    pair.second = dataLine.get(i);
                    result.add(pair);
                    dataLine.remove(j);
                    dataLine.remove(i);
                    j = 0;
                }
                else
                    j++;
            }
        }
    }

    public static class Pair {
        String first;
        String second;

        @Override
        public String toString() {
            return  first == null && second == null ? "" :
                    first == null && second != null ? second :
                            second == null && first != null ? first :
                                    first.compareTo(second) < 0 ? first + " " + second : second + " " + first;
        }
    }
}
  • ,

level04.lesson06.task04

package com.javarush.test.level04.lesson06.task04;

/* Сравнить имена
Ввести с клавиатуры два имени, и если имена одинаковые вывести сообщение «Имена идентичны». Если имена разные, но их длины равны – вывести сообщение – «Длины имен равны».
*/

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

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader  = new BufferedReader(new InputStreamReader(System.in));
          String name1 = reader.readLine();
          String name2 = reader.readLine();
          if(name1.equals(name2)) System.out.println("Имена идентичны");
          else if (name1.length=name2.length) System.out.println("Длины имен равны");
        //Напишите тут ваш код

    }
}

ide ругается на name1.length && name2.length??
  • ,

Великие птицы из level12.lesson09.task03

Рыба — отстой эволюции, не вылезшая из своего болота.
Собака — ходит и иногда ныряет за рыбой.
Самолёт — он и на земле, и в небе не бесполезен.
А Птица — универсальный боец (или просто утка).
  • ,

Сомнения в верности решения

Задача была принята сервером, но у меня трудности с пониманием пункта 4 задания, а особенно метода public static Drink getDeliciousDrink(). Т.е. решить-решил, а что решил — не понял.

package com.javarush.test.level14.lesson08.home02;

/* Дегустация вин
1. Создать абстрактный класс Drink с реализованным методом public void taste(), который выводит в консоль «Вкусно»
2. Создать класс Wine, который наследуется от Drink, с реализованным методом public String getHolidayName(), который возвращает строку «День рождения»
3. Создать класс BubblyWine, который наследуется от Wine, с реализованным методом public String getHolidayName(), который возвращает строку «Новый год»
4. Написать реализацию методов getDeliciousDrink, getWine, getBubblyWine
5. Каждый класс и интерфейс должны быть в отдельных файлах
6. Метод main менять нельзя!
*/

public class Solution {
public static void main(String[] args) {
getDeliciousDrink().taste();
System.out.println(getWine().getHolidayName());
System.out.println(getBubblyWine().getHolidayName());
System.out.println(getWine().getHolidayName());
}

public static Drink getDeliciousDrink() {
return new BubblyWine();
}

public static Wine getWine() {
return new Wine();
}

public static Wine getBubblyWine() {
return new BubblyWine();
}
}
  • ,

Сомнения

Вопрос к разработчикам.
Я понимаю, что вопрос автоматизация проверки решений задача занятная, поэтому допускаю ошибки в её работе, касающиеся одобрения неверных решений. Это из школьного: правильно, но неверно. Для примера, можно сократить дробь 95/19 просто зачеркнув «9».
Так вот. Если система приняла такое решение, мне это невыгодно, потому что вредит моему учению. Можно ли разбирать подобные решения где-то на этом ресурсе? Нельзя выкладывать готовые решения, но где найти ответ своим сомнениям?
Спасибо.
  • ,

level05.lesson07.task05

Пишет ошибка во время работы программы. Решаю так же как и предыдущие задачи этой темы. И собственное не совсем понял эту тему
public class Rectangle
{
    int rec;

    public void initialize (int left, int top, int width, int height ) {
        this.rec = left + top + width + height;
    }

    public void initialize (int width, int height) {
        width = height = 0;
        this.rec = width + height;
    }

    public void initialize (int top, int width, int height) {
         top = width = height = 5;
         this.rec = top + width + height;
    }

}
  • ,

level16.lesson10.task05

/* Один для всех, все — для одного
1. Разберись, как работает программа.
1.1. Обрати внимание, что объект Water — один для всех нитей.

2. Реализуй метод ourInterruptMethod, чтобы он прерывал все нити из threads.
3. В методе run исправь значения переменных:
3.1. isCurrentThreadInterrupted — должна равняться значению метода isInterrupted у текущей нити.
3.2. threadName — должна равняться значению метода getName (реализовано в классе Thread) у текущей нити.
*/

С пунктом 2 разобрался.
Но на пунктах 3.1 и 3.2 завис.
Никак не могу понять как можно из класса обратиться к нити, которая пока еще не создана. Подскажите в каком направлении копать?

public static class Water implements Runnable {
        private String commonResource;

        public Water(String commonResource) {
            this.commonResource = commonResource;
        }

        public void run() {
            //fix 2 variables - исправь 2 переменных
            boolean isCurrentThreadInterrupted =
            String threadName =

            try {
                while (!isCurrentThreadInterrupted) {

                    System.out.println("Объект " + commonResource + ", нить " + threadName);
                    Thread.sleep(1000);
                }
            } catch (InterruptedException e) {
            }
        }
    }
  • ,

level15.lesson09.task02

Товарищи, по условию задачи все сделал.
Программа запускается и грамотно работает, но проверку не проходит.
Посмотрите что не так.

/* Статики 2
1. В статическом блоке считайте две переменные с консоли А и В с типом int.
2. Не забыть про IOException, который надо обработать в блоке catch.
3. Закрыть поток ввода методом close().
*/