Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.telerikacademy.oop.setmap;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.*;
- public class GottaCatchEmAll {
- public static void main(String[] args) throws IOException {
- BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
- String[] commands = bf.readLine().split(" ");
- List<Pokemon> list = new LinkedList<>();
- StringBuilder sb = new StringBuilder();
- while (!commands[0].equalsIgnoreCase("end")) {
- if (commands[0].equals("add")) {
- String name = commands[1];
- String type = commands[2];
- int power = Integer.parseInt(commands[3]);
- int position = Integer.parseInt(commands[4]);
- Pokemon pokemon = new Pokemon(name, type, power, position);
- if (pokemon.pokemonPosition <= list.size()) {
- list.add(pokemon.getPokemonPosition() - 1, pokemon);
- } else {
- list.add(pokemon);
- }
- System.out.printf("Added pokemon %s to position %d%n", name, position);
- } else if (commands[0].equals("find")) {
- String type = commands[1];
- if (list.size() == 0) {
- System.out.println("Type POKEMON_TYPE: ");
- }
- list.stream()
- .sorted()
- .filter(pokemon -> pokemon.getPokemonType().equals(type))
- .limit(5)
- .forEach(sb::append);
- sb.deleteCharAt(sb.length() - 2);
- sb.deleteCharAt(sb.length() - 1);
- System.out.println(String.format("Type %s: ", type) + sb);
- } else if (commands[0].equals("ranklist")) {
- int start = Integer.parseInt(commands[1]);
- int end = Integer.parseInt(commands[2]);
- for (int i = start; i <= end; i++) {
- if(i == end-1) {
- sb.append(i + ". ");
- sb.append(list.get(i - 1));
- } else {
- sb.append(i + ". ");
- sb.append(list.get(i - 1));
- }
- }
- sb.deleteCharAt(sb.length() - 2);
- System.out.println(sb.toString().trim());
- }
- sb.replace(0, sb.length(), "");
- commands = bf.readLine().split(" ");
- }
- sb.replace(0, sb.length(), "");
- // int last = sb.lastIndexOf("\n");
- // sb.delete(last, sb.length());
- }
- private static class Pokemon implements Comparable<Pokemon> {
- private String pokemonName;
- private String pokemonType;
- int pokemonPower;
- int pokemonPosition;
- public Pokemon(String pokemonName, String pokemonType, int pokemonPower, int pokemonPosition) {
- setPokemonName(pokemonName);
- setPokemonType(pokemonType);
- setPokemonPower(pokemonPower);
- setPokemonPosition(pokemonPosition);
- }
- public String getPokemonName() {
- return pokemonName;
- }
- public void setPokemonName(String pokemonName) {
- if (pokemonName.length() < 1 || pokemonName.length() > 20) {
- throw new IllegalArgumentException("Pokemon name must be between 1 and 20 chars.");
- }
- this.pokemonName = pokemonName;
- }
- public String getPokemonType() {
- return pokemonType;
- }
- public void setPokemonType(String pokemonType) {
- if (pokemonType.length() < 1 || pokemonType.length() > 10) {
- throw new IllegalArgumentException("Pokemon Type must be between 1 and 10 chars.");
- }
- this.pokemonType = pokemonType;
- }
- public int getPokemonPower() {
- return pokemonPower;
- }
- public void setPokemonPower(int pokemonPower) {
- if (pokemonPower < 10 || pokemonPower > 50) {
- throw new IllegalArgumentException("Pokemon Power must be between 10 and 50");
- }
- this.pokemonPower = pokemonPower;
- }
- public int getPokemonPosition() {
- return pokemonPosition;
- }
- public void setPokemonPosition(int pokemonPosition) {
- this.pokemonPosition = pokemonPosition;
- }
- @Override
- public int compareTo(Pokemon pokemon) {
- return Comparator.comparing(Pokemon::getPokemonName)
- .thenComparing(Pokemon::getPokemonPower)
- .compare(pokemon,this);
- }
- @Override
- public String toString() {
- return String.format("%s(%d); ", getPokemonName(), getPokemonPower());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment