Programozó versenyek

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

2015. március 18. 8:10 – 2015. március 18. 9:45

Hegycsúcsok és vulkánok

Tanulmányozza át az alábbi UML ábrát!

A Hegycsúcs osztály különféle országok hegycsúcsainak nyilvántartására alkalmas. Bizonyos Hegycsúcsok Vulkánok: utóbbiak valamikor a múltban már kitörtek.

Töltse le a Teszt.java fájlt, majd egészítse ki a kódját a Hegycsúcs osztállyal, valamint a Vulkán osztállyal az ábrának megfelelően! Mindkét új osztály csomag-láthatóságú legyen!

Figyeljen arra, hogy a Hegycsúcs és a Vulkán osztályok toString() metódusait úgy írja meg, hogy segítségükkel a példa kimenetben látható formátumban lehessen előállítani ezen osztályok példányainak a sztringreprezentációját!

Írja meg a Teszt osztály getLegalacsonyabbHegycsúcsok metódusát úgy, hogy az egy olyan Hegycsúcs típusú objektumokat tartalmazó listát adjon vissza, amely a paraméterként megkapott Hegycsúcs típusú listában található legalacsonyabb (legkisebb magasságú) hegycsúcsokat tartalmazza!

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. import java.util.stream.Collectors;
  7. public class Teszt {
  8.     public static void main(String[] args) {
  9.         Scanner sc = new Scanner(System.in);
  10.         List<Hegycsúcs> lista = new ArrayList<>();
  11.         while (sc.hasNextLine()) {
  12.             String[] sorTomb = sc.nextLine().split(";");
  13.             if (sorTomb.length == 3)
  14.                 lista.add(new Hegycsúcs(sorTomb[0], Integer
  15.                         .parseInt(sorTomb[1]), sorTomb[2]));
  16.             else if (sorTomb.length == 4) {
  17.                 Scanner vulkánInfo = new Scanner(sorTomb[3]);
  18.                 vulkánInfo.next(); // erupted
  19.                 vulkánInfo.next(); // in
  20.                 int kitörésÉve = vulkánInfo.nextInt();
  21.                 lista.add(new Vulkán(sorTomb[0], Integer.parseInt(sorTomb[1]),
  22.                         sorTomb[2], kitörésÉve));
  23.             }
  24.         }
  25.         List<Hegycsúcs> alacsonyak = getLegalacsonyabbHegycsúcsok(lista);
  26.         Collections.sort(alacsonyak, new Comparator<Hegycsúcs>() {
  27.             @Override
  28.             public int compare(Hegycsúcs h1, Hegycsúcs h2) {
  29.                 return h1.getNév().compareTo(h2.getNév());
  30.             }
  31.         });
  32.         for (Hegycsúcs h : alacsonyak) {
  33.             System.out.println(h);
  34.         }
  35.     }
  36. }
letöltés szöveges állományként

Példa bemenet

  1. Makalu;8463;NEP
  2. Pinatubo;1486;PHL;erupted in 1991
  3. Tar-ko;950;HUN
  4. Annapurna;8091;NEP
  5. Istallos-ko;958;HUN
  6. Legyendi-galya;936;HUN
  7. Buszkes-hegy;952;HUN
  8. Sisapangma;8027;CHN
  9. Stromboli;936;ITA;erupted in 2015
  10. Galya-teto;964;HUN
letöltés szöveges állományként

Példa kimenet

  1. Legyendi-galya (936 m), HUN
  2. Stromboli (936 m), ITA, kitörés éve: 2015
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.