Problem początkującego z zadaniem

0

Panowie ktoś mógłby spojrzeć na ten kod i wskazać gdzie jest błąd?? Chodzi o to by wskazać najstarsze zwierze.
Kompletnie pogubiłem się w temacie wyjątków w tym zadaniu, pomimo pomocy @pavarotti nic mi nie wychodzi.
Jak ogarnąć ten temat??

        Lis lis = new Lis("lis", 4, "Czarny");
        Kaczka kaczka = new Kaczka("kaczka", 3, 33);
        Kot kot = new Kot("kot", 9, "Ciemne");
        Pies pies = new Pies("pies", 33,RasyPsa.JAMNIK);


      

      Zwierze[] zwierzes = new Zwierze[4];
        zwierzes[0] = lis;
        zwierzes[1] = kaczka;
        zwierzes[2] = kot;
        zwierzes[3] = pies;

        int najstarszeZwierze = zwierzes[0].getWiek();


        for (Zwierze v : zwierzes) {
            v.dajGlos();
            if (v.getWiek() > najstarszeZwierze) {
                najstarszeZwierze = v.getWiek();
            }

        }
1

@ElKolos99: W momencie kiedy znajdujesz wiek najstarszego zwierzęcia to musisz je także przechować, aby móc później wypisać:

int najstarszeZwierze = zwierzes[0].getWiek();
Zwierze najstarszeZwierzeObiekt = zwierzes[0];
        for (Zwierze v : zwierzes) {
            v.dajGlos();
            if (v.getWiek() > najstarszeZwierze) {
                najstarszeZwierze = v.getWiek();
                najstarszeZwierzeObiekt = v;
            }
        }
//Twoim najstaszym zwierzęciem jest teraz najstarszeZwierzeObiekt 
//w wieku najstarszeZwierze (popracuj na nazwami zmiennych oraz spróbuj to wypisać korzystając z funkcji System.out.println(...))
//aby znalezc imie zwierzęcia prawdopodobnie musisz skorzystać z funkcji zwracającej imie, getImie() (analogicznie jak dla getWiek()) 
1
public interface GiveAVoice {
    void giveAVoice();
}
public abstract class Animal implements GiveAVoice {
    private final String name;
    private final Integer age;

    public Animal(final String name, final Integer age) {
        validateAnimalAge(age);
        this.name = name;
        this.age = age;
    }

    private void validateAnimalAge(final int age) {
        if (age < 0) {
            throw new InvalidAnimalAgeException();
        }
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }
}

public class Cat extends Animal {
    private final Umaszczenie umaszczenie;

    public Cat(final String name, final Integer age, final Umaszczenie umaszczenie) {
        super(name, age);
        this.umaszczenie = umaszczenie;
    }

    @Override
    public void giveAVoice() {
        System.out.println("Meow");
    }

    public Umaszczenie getUmaszczenie() {
        return umaszczenie;
    }
}

public class Dog extends Animal {
    private final Breed breed;

    public Dog(final String name, final Integer age, final Breed breed) {
        super(name, age);
        this.breed = breed;
    }

    @Override
    public void giveAVoice() {
        System.out.println("Bark Bark!");
    }
}

public class Fox extends Animal {
    private final Color color;

    public Fox(final String name, final Integer age, final Color color) {
        super(name, age);
        this.color = color;
    }

    @Override
    public void giveAVoice() {
        System.out.println("What does the fox say?");
    }

    public Color getColor() {
        return color;
    }
}

public static void main(String[] args) {
        Dog dog = new Dog("Burek", 1, Breed.MONGREL);
        Fox fox = new Fox("Lisek Chytrusek", 2, Color.GINGER);
        Cat cat = new Cat("Filemon", 3, Umaszczenie.W_KROPKI);

        List<Animal> animalList = List.of(dog, fox, cat);
        Animal staryDziad = animalList.stream()
                .max(Comparator.comparing(Animal::getAge))
                .orElseThrow(NoSuchElementException::new);

        System.out.printf("Stary dziad to %s i ma %d lat", staryDziad.getName(), staryDziad.getAge());
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1