Advertisement
SPDG57

Battle Manager, Maps, lambdas, collecting

Dec 6th, 2019
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.93 KB | None | 0 0
  1. package com.company;
  2.  
  3. import javafx.util.Pair;
  4.  
  5. import javax.xml.crypto.dsig.keyinfo.KeyValue;
  6. import java.lang.reflect.Array;
  7. import java.security.KeyStore;
  8. import java.text.Collator;
  9. import java.text.DecimalFormat;
  10. import java.util.*;
  11. import java.util.function.Predicate;
  12. import java.util.regex.Matcher;
  13. import java.util.regex.Pattern;
  14. import java.util.stream.Collector;
  15. import java.util.stream.Collectors;
  16.  
  17.  
  18. public class Main {
  19.  
  20.  
  21.  
  22.     public static void main(String[] args) {
  23.         Scanner scanner = new Scanner(System.in);
  24.  
  25.         Map<String, Integer> health = new LinkedHashMap<>();
  26.         Map<String, Integer> energy = new LinkedHashMap<>();
  27.  
  28.         String input = "";
  29.         while (!"Results".equals(input = scanner.nextLine())){
  30.             String[] tokens = input.split(":");
  31.             String command = tokens[0];
  32.  
  33.             switch (command){
  34.                 case "Add":
  35.                     String personName = tokens[1];
  36.                     int hp = Integer.parseInt(tokens[2]);
  37.                     int nrg = Integer.parseInt(tokens[3]);
  38.  
  39.                     if(!health.containsKey(personName)){
  40.                         health.put(personName, hp);
  41.                         energy.put(personName, nrg);
  42.                     }else{
  43.                         health.put(personName, health.get(personName) + nrg);
  44.                     }
  45.                     break;
  46.                 case "Attack":
  47.                     String attacker = tokens[1];
  48.                     String defender = tokens[2];
  49.                     int damage = Integer.parseInt(tokens[3]);
  50.  
  51.                     if(health.containsKey(attacker) && health.containsKey(defender)){
  52.                         int damagedHealth = health.get(defender) - damage;
  53.                         if(damagedHealth > 0){
  54.                             health.put(defender, damagedHealth);
  55.                         }else{
  56.                             health.remove(defender);
  57.                             energy.remove(defender);
  58.                             System.out.println(defender + " was disqualified!");
  59.                         }
  60.                         int lostEnergy = energy.get(attacker) - 1;
  61.                         if(lostEnergy > 0){
  62.                             energy.put(attacker, lostEnergy);
  63.                         }else{
  64.                             health.remove(attacker);
  65.                             energy.remove(attacker);
  66.                             System.out.println(attacker + " was disqualified!");
  67.                         }
  68.                     }
  69.                     break;
  70.                 case "Delete":
  71.                     String deletedUser = tokens[1];
  72.                     if(deletedUser.equals("All")){
  73.                         health = new LinkedHashMap<>();
  74.                         energy = new LinkedHashMap<>();
  75.                     }
  76.                     if(health.containsKey(deletedUser)){
  77.                         health.remove(deletedUser);
  78.                         energy.remove(deletedUser);
  79.                     }
  80.                     break;
  81.                 }
  82.             }
  83.         System.out.println("People count: " + health.size());
  84.  
  85.         health = health.entrySet()
  86.                 .stream()
  87.                 .sorted((a, b) -> {
  88.                             int result = b.getValue().compareTo(a.getValue());
  89.                             if (result == 0) {
  90.                                 result = a.getKey().compareTo(b.getKey());
  91.                             }
  92.                             return result;
  93.                         }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
  94.                         (newVal, oldVal) -> oldVal, LinkedHashMap::new));
  95.  
  96.         for (Map.Entry<String, Integer> entry : health.entrySet()) {
  97.             System.out.printf("%s - %d - %d\n",
  98.                     entry.getKey(),
  99.                     entry.getValue(),
  100.                     energy.get(entry.getKey()));
  101.         }
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement