Вывод свойств объекта на экран

179
12 июля 2022, 08:30

Подскажите пожалуйста, как вывести название всех животных которые находятся в первой клетке, я попытался сделать циклом:

for (Object o : oneCell.getAnimal()) {
    System.out.println(o);
}

Но, я не могу переменную о сделать Animal и вызвать метод .getName()

for(Animal o: oneCell.getAnimal()) {
    System.out.println(o.getName())
}

Примерно так

package com.company;
import java.util.ArrayList;
public class Main {
 static class Zoo {
    private String name;
    private ArrayList newCell = new ArrayList();
    private Cell cell;
    Animal t_anim;
    public Zoo(String Name) {
        name = Name;
    }
    public void addCell(Cell cell) {
        newCell.add(cell);
    }
    public void removeCell(Cell cell) {
        newCell.remove(cell);
    }
    public String getName() {
        return name;
    }
    public void setName(String newName) {
        name = newName;
    }
    public Animal findName(String name) {
       // for (Object t_cell : newCell) {
            ArrayList t_animList = Cell.getAnimalList();
            for (Object t_anim : t_animList) {
                if (Animal.getName() == name)
                    return (Animal) t_anim;
            }
       // }
        return null;
    }
    static class Cell {
        private int number;
        private int size;
        private int maxQuantityAnimal; // Максимальное кол-во животных
        private int currentQuantityAnimal; // Текущее кол-во животных
        private Animal animal;
        public Cell(int Number, int Size, int MaxQuantityAnimal, int CurrentQuantityAnimal) {
            number = Number;
            size = Size;
            maxQuantityAnimal = MaxQuantityAnimal;
            currentQuantityAnimal = CurrentQuantityAnimal;
        }

        private static ArrayList newAnimal = new ArrayList();
        public void addAnimal(Animal animal) {
            newAnimal.add(animal);
        }
        public void removeAnimal(Animal animal) {
            newAnimal.remove(animal);
        }
        public ArrayList getAnimal() {
            return newAnimal;
        }
        public Animal GetAnimal() {
            return animal;
        }
        public void setAnimal(Animal animal) {
            this.animal = animal;
        }
        public static ArrayList getAnimalList() {
            return newAnimal;
        }
    }
     static class Animal {
        private static String name;
        private static Boolean predator;
        private Cell cell;
        private Zoo zoo;
        private ArrayList newCell = new ArrayList();
        public Animal(String Name, Boolean Predator) {
            name = Name;
            predator = Predator;
        }
        
        public Cell getCell() {
            return cell;
        }
        public void setCell(Cell cell) {
            this.cell = cell;
        }
        public static String getName() {
            return name;
        }
        public void setName(String newNme) {
            name = newNme;
        }
        public static Boolean getPredator() {
            return predator;
        }
        public void setPredator(Boolean newPredator) {
            predator = newPredator;
        }
    }

}
public static void main(String[] args) {
    Zoo newZoo = new Zoo("NSK");
    Zoo.Cell oneCell = new Zoo.Cell(5, 60, 10, 1);
    Zoo.Cell twoCell = new Zoo.Cell(10, 80, 20, 2);
    Zoo.Animal oneAnimal = new Zoo.Animal("Тигр", true);
    Zoo.Animal twoAnimal = new Zoo.Animal("Лев", false);
    Zoo.Animal threeAnimal = new Zoo.Animal("Пантера", false);
    newZoo.addCell(oneCell);
    newZoo.addCell(twoCell);
    oneCell.addAnimal(oneAnimal);
    oneCell.addAnimal(twoAnimal);
    twoCell.addAnimal(threeAnimal);
    for (Object o : oneCell.getAnimal()) {
        System.out.println(o);
    }
   // System.out.println(Zoo.Animal.getName());
    Zoo.Animal foundAnimal = newZoo.findName("Тигр");
    System.out.println(foundAnimal.getPredator());

    }
}
Answer 1

Мой вам совет. Раскидайте все классы в отдельные файлы без лишней вложенности и скорректируйте код. Вот так все работает . Мейби опечатался где, поправите:

public class Animal {
private  String name;
private  Boolean predator;
private Cell cell;
private Zoo zoo;
private ArrayList newCell = new ArrayList();
public Animal(String Name, Boolean Predator) {
    name = Name;
    predator = Predator;
}
public Cell getCell() {
    return cell;
}
public void setCell(Cell cell) {
    this.cell = cell;
}
public String getName() {
    return name;
}
public void setName(String newNme) {
    name = newNme;
}
public Boolean getPredator() {
    return predator;
}
public void setPredator(Boolean newPredator) {
    predator = newPredator;
}
}
public class Cell {
private int number;
private int size;
private int maxQuantityAnimal; // Максимальное кол-во животных
private int currentQuantityAnimal; // Текущее кол-во животных
private Animal animal;
public Cell(int Number, int Size, int MaxQuantityAnimal, int CurrentQuantityAnimal) {
    number = Number;
    size = Size;
    maxQuantityAnimal = MaxQuantityAnimal;
    currentQuantityAnimal = CurrentQuantityAnimal;
}

private ArrayList<Animal> newAnimal = new ArrayList();
public void addAnimal(Animal animal) {
    newAnimal.add(animal);
}
public void removeAnimal(Animal animal) {
    newAnimal.remove(animal);
}
public ArrayList<Animal> getAnimal() {
    return newAnimal;
}
public Animal GetAnimal() {
    return animal;
}
public void setAnimal(Animal animal) {
    this.animal = animal;
}
public  ArrayList<Animal> getAnimalList() {
    return newAnimal;
}
}
public class Zoo {
private String name;
private ArrayList<Cell> newCell = new ArrayList();
public Zoo(String Name) {
    name = Name;
}
public void addCell(Cell cell) {
    newCell.add(cell);
}
public void removeCell(Cell cell) {
    newCell.remove(cell);
}
public String getName() {
    return name;
}
public void setName(String newName) {
    name = newName;
}
 public Animal findName(String name, Cell cell) {
    ArrayList<Animal> t_animList = cell.getAnimalList();
    for (Animal t_anim : t_animList) {
        if (t_anim.getName().equals(name))
            return t_anim;
    }
    return null;
}
}
public class Main {
public static void main(String[] args) {
    Zoo newZoo = new Zoo("NSK");
    Cell oneCell = new Cell(5, 60, 10, 1);
    Cell twoCell = new Cell(10, 80, 20, 2);
    Animal oneAnimal = new Animal("Тигр", true);
    Animal twoAnimal = new Animal("Лев", false);
    Animal threeAnimal = new Animal("Пантера", false);
    oneCell.addAnimal(oneAnimal);
    oneCell.addAnimal(twoAnimal);
    twoCell.addAnimal(threeAnimal);
    newZoo.addCell(oneCell);
    newZoo.addCell(twoCell);

    for (Animal o : oneCell.getAnimal()) {
       System.out.println(o.getName();)
    }
     Animal foundAnimal = newZoo.findName("Тигр", oneCell);
    System.out.println(foundAnimal.getPredator());
 
}
}
READ ALSO
Как разобраться с папками в web приложении Java SpringBoot

Как разобраться с папками в web приложении Java SpringBoot

Помогите разобраться с папками в web приложении на SpringBoot, thymeleaf Сколько видео не смотрел на эту тему, каждый создает свою структуру папок, при...

277
Как сменить каталог templates в Thymeleaf?

Как сменить каталог templates в Thymeleaf?

Операционка WindowsВ приложении структура каталогов:

181
Как правильно задать blur для тени?

Как правильно задать blur для тени?

Как сделать div c тенью цвета #000000, 40% прозрачности и 20px размытием (blur)?

389
Как сверстать этот блок?

Как сверстать этот блок?

текст, выделенный жирным шрифтомПодскажите как сверстать такой блок без анимации на CSS?

515