Guest User

Maps, Lambda and Stream API - 03. Legendary Farming

a guest
Nov 10th, 2019
844
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.97 KB | None | 0 0
  1. package Maps;
  2.  
  3. import java.util.Map;
  4. import java.util.Scanner;
  5. import java.util.TreeMap;
  6.  
  7. public class LegendaryFarming {
  8.     public static void main(String[] args) {
  9.         Scanner input = new Scanner(System.in);
  10.  
  11.         TreeMap<String, Integer> keyMaterials = new TreeMap<>();
  12.         TreeMap<String, Integer> junkMaterials = new TreeMap<>();
  13.  
  14.         keyMaterials.put("shards", 0);
  15.         keyMaterials.put("fragments", 0);
  16.         keyMaterials.put("motes", 0);
  17.  
  18.         int lastNumber = 0;
  19.         String winner = " ";
  20.  
  21.         while (winner.equals(" ")){
  22.             String[] data = input.nextLine().toLowerCase().split("\\s+");
  23.  
  24.             for(int a = 0; a < data.length; a++){
  25.                 if(a % 2 != 0){
  26.                     if(data[a].equals("shards") || data[a].equals("fragments") || data[a].equals("motes")){
  27.                         lastNumber = keyMaterials.get(data[a]);
  28.                         keyMaterials.put(data[a], lastNumber + Integer.parseInt(data[a - 1]));
  29.  
  30.                         if(winner.equals(" ")){
  31.                             winner = determinesWinner(keyMaterials, winner, data[a]);
  32.                             if(!winner.equals(" ")){
  33.                                 recalculatesWinnerMaterial(keyMaterials, data[a]);
  34.                                 break;
  35.                             }
  36.                         }
  37.                     }
  38.                     else{
  39.                         junkMaterials.putIfAbsent(data[a], 0);
  40.                         lastNumber = junkMaterials.get(data[a]);
  41.                         junkMaterials.put(data[a], lastNumber + Integer.parseInt(data[a - 1]));
  42.                     }
  43.                 }
  44.             }
  45.  
  46.         }
  47.  
  48.         System.out.println(winner + " obtained!");
  49.  
  50.      
  51.         keyMaterials
  52.                 .entrySet()
  53.                 .stream()
  54.                 .sorted(Map.Entry.<String, Integer>comparingByValue().reversed().thenComparing(Map.Entry.comparingByKey()))
  55.                 .forEach(result -> System.out.printf("%s: %d%n", result.getKey(), result.getValue()));
  56.  
  57.      
  58.         junkMaterials
  59.                 .entrySet()
  60.                 .stream()
  61.                 .sorted(Map.Entry.<String, Integer>comparingByKey())
  62.                 .forEach(result -> System.out.printf("%s: %d%n", result.getKey(), result.getValue()));
  63.        
  64.     }
  65.  
  66.     public static String determinesWinner(TreeMap<String, Integer> keyMats, String winner, String key){
  67.         if(keyMats.get(key) >= 250){
  68.             switch (key){
  69.                 case "shards": winner = "Shadowmourne"; break;
  70.                 case "fragments": winner = "Valanyr"; break;
  71.                 case "motes": winner = "Dragonwrath"; break;
  72.                 default: break;
  73.             }
  74.         }
  75.         return winner;
  76.     }
  77.  
  78.     public static void recalculatesWinnerMaterial(TreeMap<String, Integer> keyMaterials, String key){
  79.         int newValue = keyMaterials.get(key) - 250;
  80.         keyMaterials.put(key, newValue);
  81.     }
  82. }
Add Comment
Please, Sign In to add comment