RGAlex

O3. Legendary Farming / Maps, Lambda and Stream API - Exercise

Mar 8th, 2021 (edited)
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.92 KB | None | 0 0
  1. package MapsLambdaStreamAPI.Exercise;
  2.  
  3. import java.util.*;
  4.  
  5. public class O3LegendaryFarming {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.         Map<String, Integer> elements = new TreeMap<>
  9.                 (Map.of("fragments", 0, "shards", 0, "motes", 0));
  10.         Map<String, Integer> junk = new TreeMap<>();
  11.         label:
  12.         while (true) {
  13.             List<String> input = Arrays.asList(scanner.nextLine().toLowerCase().split(" "));
  14.             for (int i = 1; i < input.size(); i = i + 2) {
  15.                 String type = input.get(i);
  16.                 int size = Integer.parseInt(input.get(i - 1));
  17.  
  18.                 switch (input.get(i)) {
  19.                     case "shards":
  20.                     case "fragments":
  21.                     case "motes":
  22.                         elements.put(type, elements.get(type) + size);
  23.                         if (elements.get(type) >= 250) {
  24.                             elements.put(type, elements.get(type) - 250);
  25.                             if (type.equals("fragments")) System.out.println("Valanyr obtained!");
  26.                             if (type.equals("shards")) System.out.println("Shadowmourne obtained!");
  27.                             if (type.equals("motes")) System.out.println("Dragonwrath obtained!");
  28.                             break label;
  29.                         }
  30.                         break;
  31.                     default:
  32.                         junk.putIfAbsent(type, 0);
  33.                         junk.put(type, junk.get(type) + size);
  34.                         break;
  35.                 }
  36.             }
  37.         }
  38.         elements.entrySet().stream()
  39.                 .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
  40.                 .forEach(a -> System.out.printf("%s: %d%n", a.getKey(), a.getValue()));
  41.  
  42.         junk.forEach((key, value) -> System.out.printf("%s: %d%n", key, value));
  43.     }
  44. }
  45.  
Add Comment
Please, Sign In to add comment