mstoyanova

Untitled

Jun 25th, 2021
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.94 KB | None | 0 0
  1. package com.telerikacademy.oop.setmap;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.*;
  7.  
  8. public class GottaCatchEmAll {
  9.     public static void main(String[] args) throws IOException {
  10.         BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
  11.         String[] commands = bf.readLine().split(" ");
  12.         List<Pokemon> list = new LinkedList<>();
  13.  
  14.         StringBuilder sb = new StringBuilder();
  15.  
  16.  
  17.         while (!commands[0].equalsIgnoreCase("end")) {
  18.             if (commands[0].equals("add")) {
  19.                 String name = commands[1];
  20.                 String type = commands[2];
  21.                 int power = Integer.parseInt(commands[3]);
  22.                 int position = Integer.parseInt(commands[4]);
  23.                 Pokemon pokemon = new Pokemon(name, type, power, position);
  24.                 if (pokemon.pokemonPosition <= list.size()) {
  25.                     list.add(pokemon.getPokemonPosition() - 1, pokemon);
  26.                 } else {
  27.                     list.add(pokemon);
  28.                 }
  29.  
  30.                 System.out.printf("Added pokemon %s to position %d%n", name, position);
  31.  
  32.             } else if (commands[0].equals("find")) {
  33.                 String type = commands[1];
  34.                 if (list.size() == 0) {
  35.                     System.out.println("Type POKEMON_TYPE: ");
  36.                 }
  37.                 list.stream()
  38.                         .sorted()
  39.                         .filter(pokemon -> pokemon.getPokemonType().equals(type))
  40.                         .limit(5)
  41.                         .forEach(sb::append);
  42.  
  43.                 sb.deleteCharAt(sb.length() - 2);
  44.                 sb.deleteCharAt(sb.length() - 1);
  45.  
  46.                 System.out.println(String.format("Type %s: ", type) + sb);
  47.  
  48.  
  49.             } else if (commands[0].equals("ranklist")) {
  50.                 int start = Integer.parseInt(commands[1]);
  51.                 int end = Integer.parseInt(commands[2]);
  52.                 for (int i = start; i <= end; i++) {
  53.                     if(i == end-1) {
  54.                         sb.append(i + ". ");
  55.                         sb.append(list.get(i - 1));
  56.  
  57.                     } else {
  58.                         sb.append(i + ". ");
  59.                         sb.append(list.get(i - 1));
  60.                     }
  61.                 }
  62.                 sb.deleteCharAt(sb.length() - 2);
  63.  
  64.                 System.out.println(sb.toString().trim());
  65.  
  66.             }
  67.             sb.replace(0, sb.length(), "");
  68.             commands = bf.readLine().split(" ");
  69.  
  70.         }
  71.         sb.replace(0, sb.length(), "");
  72. //        int last = sb.lastIndexOf("\n");
  73. //        sb.delete(last, sb.length());
  74.  
  75.  
  76.     }
  77.  
  78.  
  79.     private static class Pokemon implements Comparable<Pokemon> {
  80.         private String pokemonName;
  81.         private String pokemonType;
  82.         int pokemonPower;
  83.         int pokemonPosition;
  84.  
  85.         public Pokemon(String pokemonName, String pokemonType, int pokemonPower, int pokemonPosition) {
  86.             setPokemonName(pokemonName);
  87.             setPokemonType(pokemonType);
  88.             setPokemonPower(pokemonPower);
  89.             setPokemonPosition(pokemonPosition);
  90.         }
  91.  
  92.         public String getPokemonName() {
  93.             return pokemonName;
  94.         }
  95.  
  96.         public void setPokemonName(String pokemonName) {
  97.             if (pokemonName.length() < 1 || pokemonName.length() > 20) {
  98.                 throw new IllegalArgumentException("Pokemon name must be between 1 and 20 chars.");
  99.             }
  100.             this.pokemonName = pokemonName;
  101.         }
  102.  
  103.         public String getPokemonType() {
  104.             return pokemonType;
  105.         }
  106.  
  107.         public void setPokemonType(String pokemonType) {
  108.             if (pokemonType.length() < 1 || pokemonType.length() > 10) {
  109.                 throw new IllegalArgumentException("Pokemon Type must be between 1 and 10 chars.");
  110.             }
  111.             this.pokemonType = pokemonType;
  112.         }
  113.  
  114.         public int getPokemonPower() {
  115.             return pokemonPower;
  116.         }
  117.  
  118.         public void setPokemonPower(int pokemonPower) {
  119.             if (pokemonPower < 10 || pokemonPower > 50) {
  120.                 throw new IllegalArgumentException("Pokemon Power must be between 10 and 50");
  121.             }
  122.             this.pokemonPower = pokemonPower;
  123.         }
  124.  
  125.         public int getPokemonPosition() {
  126.             return pokemonPosition;
  127.         }
  128.  
  129.         public void setPokemonPosition(int pokemonPosition) {
  130.             this.pokemonPosition = pokemonPosition;
  131.         }
  132.  
  133.  
  134.         @Override
  135.         public int compareTo(Pokemon pokemon) {
  136.             return Comparator.comparing(Pokemon::getPokemonName)
  137.                     .thenComparing(Pokemon::getPokemonPower)
  138.                     .compare(pokemon,this);
  139.         }
  140.  
  141.         @Override
  142.         public String toString() {
  143.             return String.format("%s(%d); ", getPokemonName(), getPokemonPower());
  144.         }
  145.     }
  146. }
  147.  
Advertisement
Add Comment
Please, Sign In to add comment