Advertisement
Guest User

Untitled

a guest
Jun 10th, 2019
725
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.51 KB | None | 0 0
  1. package Advanced.DefiningClasses.PokemonTrainer;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.LinkedHashMap;
  7. import java.util.Map;
  8.  
  9. public class Main {
  10.     public static void main(String[] args) throws IOException {
  11.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  12.  
  13.         Map<String, Trainer> trainers = new LinkedHashMap<>();
  14.  
  15.         String input;
  16.  
  17.         while (!"Tournament".equals(input = reader.readLine())) {
  18.             String[] data = input.split("\\s+");
  19.  
  20.             String trainerName = data[0];
  21.             String pokemonName = data[1];
  22.             String element = data[2];
  23.             int health = Integer.parseInt(data[3]);
  24.  
  25.             Pokemon pokemon = new Pokemon(pokemonName, element, health);
  26.  
  27.             trainers.putIfAbsent(trainerName, new Trainer());
  28.             trainers.get(trainerName).addPokemon(pokemon);
  29.  
  30.         }
  31.  
  32.         String command;
  33.  
  34.         while (!"End".equals(command = reader.readLine())) {
  35.  
  36.             for (Map.Entry<String, Trainer> kvp : trainers.entrySet()) {
  37.                 if (kvp.getValue().getPokemons().size() > 0) {
  38.                     for (Pokemon pokemon : kvp.getValue().getPokemons()) {
  39.                         boolean havePokemon = false;
  40.                         if (pokemon.getElement().equals(command)) {
  41.                             havePokemon = true;
  42.                         }
  43.                         if (havePokemon) {
  44.                             kvp.getValue().setNumOfBadges();
  45.                             break;
  46.                         } else {
  47.                             pokemon.lowerHealth();
  48.                             if (pokemon.getHealth() <= 0) {
  49.                                 kvp.getValue().getPokemons().remove(pokemon);
  50.                                 if (kvp.getValue().getPokemons().size() < 1) {
  51.                                     break;
  52.                                 }
  53.                             }
  54.                         }
  55.                     }
  56.                 }
  57.             }
  58.         }
  59.         trainers.entrySet().stream()
  60.                 .sorted((b1, b2) -> Integer.compare(b2.getValue().getNumOfBadges(), b1.getValue().getNumOfBadges()))
  61.                 .forEach(t -> {
  62.                     System.out.println(String.format("%s %s %s", t.getKey(),
  63.                             t.getValue().getNumOfBadges(),
  64.                             t.getValue().getPokemons().size()));
  65.                 });
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement