Didart

Serbian Music Unleashed

Jan 20th, 2023
940
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.80 KB | None | 0 0
  1. package SetsAndMaps3;
  2.  
  3. import java.util.LinkedHashMap;
  4. import java.util.Scanner;
  5.  
  6. public class SerbianMusicUnleashed {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         LinkedHashMap<String, LinkedHashMap<String, Integer>> concerts = new LinkedHashMap<>();
  11.  
  12.         String input = scanner.nextLine();
  13.  
  14.         while (!input.equals("End")) {
  15.            
  16.             if (!input.contains("@") || input.charAt(input.indexOf("@") - 1) != ' ') {
  17.                 input = scanner.nextLine();
  18.                 continue;
  19.             }
  20.  
  21.             String singer = input.substring(0, input.indexOf("@") - 1);
  22.          
  23.             int firstIndexOfNumber = 0;
  24.             for (int i = input.indexOf("@"); i < input.length(); i++) {
  25.                 char currentSymbol = input.charAt(i);
  26.  
  27.                 if (Character.isDigit(currentSymbol) && input.charAt(i - 1) == ' ') {
  28.                     firstIndexOfNumber = i;
  29.                     break;
  30.                 }
  31.             }
  32.  
  33.             if (firstIndexOfNumber == 0) {
  34.                 input = scanner.nextLine();
  35.                 continue;
  36.             }
  37.  
  38.             String venue = input.substring(input.indexOf("@") + 1, firstIndexOfNumber - 1);
  39.             String numbers = input.substring(firstIndexOfNumber);
  40.             String[] numbersArray = numbers.split("\\s+");
  41.  
  42.             if (numbersArray.length != 2) {
  43.                 input = scanner.nextLine();
  44.                 continue;
  45.             }
  46.             int price = Integer.parseInt(numbersArray[0]);
  47.             int capacity = Integer.parseInt(numbersArray[1]);
  48.  
  49.  
  50.             if (!concerts.containsKey(venue)) {
  51.                 LinkedHashMap<String, Integer> singers = new LinkedHashMap<>();
  52.                 singers.put(singer, price * capacity);
  53.                 concerts.put(venue, singers);
  54.             } else {
  55.                 LinkedHashMap<String, Integer> currentSingers = concerts.get(venue);
  56.  
  57.                 if (currentSingers.containsKey(singer)) {
  58.                     currentSingers.put(singer, currentSingers.get(singer) + price * capacity);
  59.                 } else {
  60.                     currentSingers.put(singer, price * capacity);
  61.                 }
  62.                 concerts.put(venue, currentSingers);
  63.             }
  64.             input = scanner.nextLine();
  65.         }
  66.  
  67.         for (String venue : concerts.keySet()) {
  68.             System.out.println(venue);
  69.  
  70.             LinkedHashMap<String, Integer> singers = concerts.get(venue);
  71.  
  72.             singers.entrySet()
  73.                     .stream()
  74.                     .sorted((singer1, singer2) -> singer2.getValue().compareTo(singer1.getValue()))
  75.                     .forEach(singer -> System.out.printf("#  %s -> %d%n", singer.getKey(), singer.getValue()));
  76.         }
  77.     }
  78. }
  79.  
Advertisement
Add Comment
Please, Sign In to add comment