создать новый объект с использованием предыдущей переменной конструктора - PullRequest
0 голосов
/ 28 апреля 2020

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

 public enum Animal{
            DOG,
            CAT,
            HORSE
            }

            public class Attendace {
                private Animal animal;
                private boolean present;
                private static int count;

                public Attendace (Animal animal, boolean present) {
                    this.animal = animal;
                    this.present= present;
                }

                public Attendace() {}

                public static boolean presence{
                 Attendace a = new Attendace();
                 if(a.animal == Animal.CAT && count == 0){
                  ++count;
                  return true;
                 }
                 return false
                }     
            }


            new Attendace(Animal.randomEnum(), Attendace.presence());

);

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Для instance a вы используете constructor без входных параметров. Вот почему ваш private Animal равен null.

Чтобы это исправить, передайте ваше животное вашему a object constructor, как вы делали в последней строке:

public static boolean presence{
             Attendace a = new Attendace(Animal.randomEnum(), Attendace.presence());
             if(a.animal == Animal.CAT && count == 0){
              ++count;
              return true;
             }
             return false
            }     
0 голосов
/ 28 апреля 2020

В presence вы создаете новый экземпляр Attendance без предоставления ему Animal, что означает animal остается null.

Вместо этого измените presence на следующее:

public boolean presence() {
    int count = 0;
    if (animal == Animal.CAT && count == 0) {
        ++count;
        return true;
    }
    return false;
}

... удалить boolean presence из конструктора и вместо этого вызвать функцию.

public Attendace (Animal animal) {
    this.animal = animal;
    this.present = presence();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...