Почему не работает условие в if?

126
20 ноября 2019, 13:50

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

3 и 4 условие if он сравнивает его объекты и думает что father и mother cat это одно и тоже но как конкретнее описать эти объекты. Так как все остальные условие выполняются верно но и содержания у них одни и те же. А здесь содержание разное так mother это дочь catGrandmother а father это сын catGrandfather. По задаче они обязательно все должны быть статическими.

    public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String grandfatherName = reader.readLine();
        Cat catGrandfather = new Cat(grandfatherName);
        String grandmotherName = reader.readLine();
        Cat catGrandmother = new Cat(grandmotherName);
        String fatherName = reader.readLine();
        Cat catFather = new Cat(fatherName, catGrandfather);
        String motherName = reader.readLine();
        Cat catMother = new Cat(motherName, catGrandmother);
        String sonName = reader.readLine();
        Cat catSon = new Cat(sonName, catMother, catFather);
        String daughterName = reader.readLine();
        Cat catDaughter = new Cat(daughterName, catMother, catFather);
        System.out.println(catGrandfather);
        System.out.println(catGrandmother);
        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 parent;
    private Cat parent2;
    Cat(String name) {
        this.name = name;
    }
    Cat(String name, Cat parent) {
        this.name = name;
        this.parent = parent;
    }

    Cat(String name, Cat parent, Cat parent2){
        this.name = name;
        this.parent = parent;
        this.parent2 = parent2;
    }

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

Статика тут не причем. У вас неправильно записано условие.

Теоретически это должно быть правильным:

if (parent == null && parent2 == null)
        return "Cat name is " + name + ", no mother, no father ";
    else if (parent2 == null)
        return "Cat name is " + name + ", no mother, father is " + parent.name;
    else if(parent == null)
         return "Cat name is " + name + ", mother is " + parent2.name +", no father";
    else
        return "Cat name is " + name + ", mother is " + parent.name +", father is "+parent2.name;
READ ALSO
Какой из NavigationView был свёрнут?

Какой из NavigationView был свёрнут?

Есть два NavigationView на одном экране

128
Как задать иконке закруглённый фон? [закрыт]

Как задать иконке закруглённый фон? [закрыт]

Как сделать такую же ерись как на картинке ?

129
Как при использовании команды animateMotion избежать переворачивания объекта движения

Как при использовании команды animateMotion избежать переворачивания объекта движения

Я создал svg приложение в котором два объекта движутся по криволинейной траекторииЖёлтый шарик при движении не переворачивается, так как...

138
Как сделать border style circle на css?

Как сделать border style circle на css?

Как сделать границу кружочками на css, как на картинке, не используя при этом повторяющееся изображение круга, но при этом, чтобы при различном...

158