Programozó versenyek

Programozási technológiák, 2015. március 18., Cs14 ZH

2015. március 19. 14:10 – 2015. március 19. 15:45

Állatkerti kifutók

Tekintse az alábbi osztálydiagramot!

Egy állatkertben az állatok elhelyezése nem kizárólag ketrecekben történhet, hanem kifutók, és akváriumok is tartozhatnak egy-egy faj elhelyezésére szánt területhez. Ezek tetszőleges számban és kombinációban előfordulhatnak elő. Gyakori például, hogy a jegesmedve elhelyezésére szánt terület egy ketrecből, egy száraz kifutóból, valamint még egy kifutóból áll, melyhez már tartozik egy akváriumi rész is.

Töltse le a Teszt.java osztályt, majd egészítse ki egy Faj, egy Kifutó egy Ketrec és egy Akvárium osztállyal, valamint valamint egy absztrakt Élettér osztállyal, az ábrának megfelelően! Minden új osztály csomag-láthatóságú legyen!

Figyeljen arra, hogy az osztályok toString() metódusait úgy írja meg, hogy a példa kimenetben látható formátumban lehessen előállítani ezen osztályok példányainak sztringreprezentációját!

Írja meg a Teszt osztály getLegnagyobbSzárazÉlettér() metódusát úgy, hogy az egy olyan Faj típusú objektumokat tartalmazó listát adjon vissza, amelyben a paraméterként megkapott Faj típusú listában található, egy egyedre jutó legnagyobb száraz (Kifutó és Ketrec) élettérrel rendelkező állatok szerepelnek. Az inputban egy-egy faj csak egyszer fordul elő.

A Teszt osztályban található main(…) metódust ne módosítsa!

Teszt.java

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.Comparator;
  4. import java.util.List;
  5. import java.util.Scanner;
  6. /* Your code here */
  7. public class Teszt {
  8.     /* Your code here */
  9.     public static void main(String[] args) {
  10.         Scanner sc = new Scanner(System.in);
  11.         List<Faj> fajok = new ArrayList<Faj>();
  12.         while (sc.hasNextLine()) {
  13.             String[] sorTömb = sc.nextLine().split(";");
  14.             List<Élettér> életterek = new ArrayList<Élettér>();
  15.             for (int i = 2; i < sorTömb.length; i++) {
  16.                 String s = sorTömb[i].substring(1, sorTömb[i].length());
  17.                 String[] adatok = s.split("-");
  18.                 if (sorTömb[i].startsWith("A")) { // Akvárium
  19.                     életterek.add(new Akvárium(Integer.parseInt(adatok[0]),
  20.                             Integer.parseInt(adatok[1])));
  21.                 } else if (sorTömb[i].startsWith("R")) { // Kifutó
  22.                     életterek.add(new Kifutó(Integer.parseInt(adatok[0]),
  23.                             adatok[1]));
  24.                 } else if (sorTömb[i].startsWith("C")) { // Ketrec
  25.                     életterek.add(new Ketrec(Integer.parseInt(adatok[0]),
  26.                             Boolean.parseBoolean(adatok[1])));
  27.                 }
  28.             }
  29.             Faj faj = new Faj(sorTömb[0], Integer.parseInt(sorTömb[1]),
  30.                     életterek);
  31.             fajok.add(faj);
  32.         }
  33.         Collections.sort(fajok, new Comparator<Faj>() {
  34.             @Override
  35.             public int compare(Faj o1, Faj o2) {
  36.                 return o1.getMegnevezés().compareTo(o2.getMegnevezés());
  37.             }
  38.         });
  39.         for (Faj faj : getLegnagyobbSzárazÉlettér(fajok)) {
  40.             System.out.println(faj);
  41.         }
  42.     }
  43. }
letöltés szöveges állományként

Példa bemenet

  1. Oroszlán;5;C30-true;R100-homok
  2. Ló;4;R30-föld;R90-homok;C50-true
  3. Csirke;12;C12-true
  4. Elefánt;4;R120-homok;C50-true
letöltés szöveges állományként

Példa kimenet

  1. Elefánt
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.