JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/не проходит по одному условию и никак не могу понять, что...
Анна Ивашенцева
22 уровень
  • 19.11.2019
  • 582просмотров
  • 8комментариев

не проходит по одному условию и никак не могу понять, что не так

Вопрос по задаче Родственные связи кошек
Java Syntax,  6 уровень,  11 лекция
Решен


Задача: У каждой кошки есть имя и кошка-мама.
Создать класс, который бы описывал данную ситуацию.
Создать два объекта: кошку-дочь и кошку-маму.
Вывести их на экран.

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

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

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

Требования:
  • Программа должна считывать имена 6 котов в указанном порядке.
  • Метод main должен создавать 6 объектов типа Cat.
  • Программа должна выводить 6 строк с информацией о котах.
  • Строка про дедушку (первая) должна соответствовать условию.
  • Строка про бабушку (вторая) должна соответствовать условию.
  • Строка про папу (третья) должна соответствовать условию.
  • Строка про маму (четвертая) должна соответствовать условию.
  • Строка про сына (пятая) должна соответствовать условию.
  • Строка про дочь (шестая) должна соответствовать условию.
package com.javarush.task.task06.task0621; import java.io.BufferedReader; 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 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,grandpaName); String motherName = reader.readLine(); Cat catMother = new Cat(motherName, grandmaName, null); String sonName = reader.readLine(); Cat catSon = new Cat(sonName, motherName, fatherName); String daughterName = reader.readLine(); Cat catDaughter = new Cat(daughterName, motherName, fatherName); 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 String parentFather; private String parentMother; Cat(String name) { this.name = name; } Cat(String name, String parentFather) { this.name = name; this.parentFather = parentFather; } Cat(String name, String parentMother, String parentFather) { this.name = name; this.parentMother = parentMother; this.parentFather = parentFather; } @Override public String toString() { if (parentMother == null && parentMother == null){ return "The cat's name is " + name + ", no mother, no father ";} else if (parentMother != null && parentFather == null){ return "The cat's name is " + name + ", mother is " + parentMother + ", no father";} else if (parentFather != null && parentMother == null){ return "The cat's name is " + name + ", no mother, father is " + parentFather;} else { return "The cat's name is " + name + ", mother is " + parentMother + ", father is " + parentFather; } } } }
0
Комментарии (8)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Pavel Kurashov
Уровень 17
Expert
19 ноября 2019, 11:33
Раз уже проблема найдена, покажу свой код, но у меня были ссылки на родителей котов, а не просто строки:
public String toString() {

            String mom = mother == null ? ", no mother" : ", mother is " + mother.name;
            String dad = father == null ? ", no father" : ", father is " + father.name;
                return "The cat's name is " + name + mom + dad;
        }
Просто самому нравится )
0
hidden #598481
Уровень 27
19 ноября 2019, 12:34
Молодец. Только по конвенции принято условие брать в круглые скобки, если используешь тернарный оператор:
String mom = (mother == null) ? //...
Можно еще и так сделать:
public static void main(String[] args) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    Cat grandfather = new Cat(reader.readLine());
    Cat grandmother = new Cat(reader.readLine());
    Cat father = new Cat(reader.readLine(), null, grandfather);
    Cat mother = new Cat(reader.readLine(), grandmother, null);
    Cat son = new Cat(reader.readLine(), mother, father);
    Cat daughter = new Cat(reader.readLine(), mother, father);

    List<Cat> cats = Arrays.asList(grandfather, grandmother, father, mother, son, daughter);
    cats.forEach(System.out::println);
}
0
Pavel Kurashov
Уровень 17
Expert
19 ноября 2019, 13:54
Конвенции разные могут быть ) А с выводом, я что-то похожее делал для задачи с семейством людей, там семья гораздо больше была, только вот без этих ваших штучек из Iterate~Collection 😇
0
Pavel Kurashov
Уровень 17
Expert
19 ноября 2019, 11:31
Проверил своё решение, так и есть, предполагается что у класса Cat ссылки на родителей, а не просто строчки. И да, 63-я строка )
0
hidden #598481
Уровень 27
19 ноября 2019, 09:05
Ищи сдвоенный пробел в последней строчке. К слову, по-моему в этой задаче задумывалось, что у каждого объекта будет ссылка на котов-родителей, а не просто указание их имен, т.е. одно поле String name и два поля типа Cat, указывающие на маму и папу. Но судя по тому, что другие строки прошли тест, устраивает и этот подход.
0
Анна Ивашенцева
Уровень 22
19 ноября 2019, 10:22
за сдвоенный пробел спасибо , но в выводе он пишет,что нет мамы и нет папы, а в этой строке Cat catFather = new Cat(fatherName,grandpaName); я указала, что туда надо вставить дедушку. не понимаю почему он показывает, что нет отца
0
hidden #598481
Уровень 27
19 ноября 2019, 11:20
а, увидел. Смотри внимательно строчку 63.
if (parentMother == null && parentMother == null){
0
Анна Ивашенцева
Уровень 22
19 ноября 2019, 12:02
спасибо большое, все из за невнимательности ((
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRush JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2025 JavaRush
MastercardVisa
"Программистами не рождаются" © 2025 JavaRush