Advertisement
mark79

Java Fundamentals - Legendary Farming

Jul 31st, 2019
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.41 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class LegendaryFarming {
  4.  
  5.     public static void main(String[] args) {
  6.         Scanner scanner = new Scanner(System.in);
  7.  
  8.         TreeMap<String, Integer> junkItems = new TreeMap<>();
  9.         LinkedHashMap<String, Integer> legends = new LinkedHashMap<>();
  10.  
  11.         legends.put("fragments", 0);
  12.         legends.put("motes", 0);
  13.         legends.put("shards", 0);
  14.  
  15.         while (true) {
  16.             String[] items = scanner.nextLine().toLowerCase().split("\\s+");
  17.  
  18.             for (int i = 0; i < items.length; i += 2) {
  19.                 String item = items[i + 1];
  20.                 int qty = Integer.parseInt(items[i]);
  21.  
  22.                 if (legends.containsKey(item)) {
  23.                     legends.put(item, legends.get(item) + qty);
  24.                     if (legends.get(item) >= 250) {
  25.                         legends.put(item, legends.get(item) - 250);
  26.                         printLegendary(item);
  27.                         printLegends(legends);
  28.                         printJunks(junkItems);
  29.                         return;
  30.                     }
  31.                 } else {
  32.                     junkItems.putIfAbsent(item, 0);
  33.                     junkItems.put(item, junkItems.get(item) + qty);
  34.                 }
  35.             }
  36.         }
  37.     }
  38.  
  39.     private static void printJunks(TreeMap<String, Integer> junkItems) {
  40.         junkItems.forEach((key, value) -> System.out.printf("%s: %d%n", key, value));
  41.     }
  42.  
  43.     private static void printLegendary(String item) {
  44.         String legend = "";
  45.         switch (item) {
  46.             case "fragments":
  47.                 legend = "Valanyr";
  48.                 break;
  49.             case "motes":
  50.                 legend = "Dragonwrath";
  51.                 break;
  52.             case "shards":
  53.                 legend = "Shadowmourne";
  54.                 break;
  55.         }
  56.         System.out.printf("%s obtained!%n", legend);
  57.     }
  58.  
  59.     private static void printLegends(LinkedHashMap<String, Integer> legends) {
  60.         legends.entrySet().stream().
  61.                 sorted((f, s) -> {
  62.                     if (s.getValue() - f.getValue() == 0) {
  63.                         return f.getKey().compareTo(s.getKey());
  64.                     } else {
  65.                         return s.getValue() - f.getValue();
  66.                     }
  67.                 }).
  68.                 forEach(legend -> System.out.printf("%s: %d%n", legend.getKey(), legend.getValue()));
  69.     }
  70.  
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement