Advertisement
desislava_topuzakova

03. The Pianist

Jul 27th, 2022
1,326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.56 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class ThePianist_03 {
  4.     public static void main(String[] args) {
  5.         Scanner scanner = new Scanner(System.in);
  6.         int countPieces = Integer.parseInt(scanner.nextLine()); //брой на пиесите
  7.         //пиеса -> списък с информация ([0] -> композитора, [1] -> тоналност)
  8.         Map<String, List<String>> piecesMap = new LinkedHashMap<>();
  9.         //информация за пиеса
  10.         for (int piece = 1; piece <= countPieces; piece++) {
  11.             String pieceData = scanner.nextLine();
  12.             //"{piece}|{composer}|{tone}"
  13.             String[] piecePart = pieceData.split("\\|"); //["{piece}", "{composer}", "{tone}"]
  14.             String pieceName = piecePart[0];
  15.             String composer = piecePart[1];
  16.             String tone = piecePart[2];
  17.  
  18.             List<String> pieceInfo = new ArrayList<>();
  19.             pieceInfo.add(composer); //[0]
  20.             pieceInfo.add(tone); //[1]
  21.  
  22.             piecesMap.put(pieceName, pieceInfo);
  23.         }
  24.  
  25.         //получаваме команди
  26.         String command = scanner.nextLine();
  27.         while (!command.equals("Stop")) {
  28.             if (command.contains("Add")) {
  29.                 //command = "Add|{piece}|{composer}|{key}".split("|") -> ["Add", "{piece}", "{composer}", "{key}"]
  30.                 String pieceName = command.split("\\|")[1];
  31.                 String composer = command.split("\\|")[2];
  32.                 String tone = command.split("\\|")[3];
  33.                 //има такава пиеса
  34.                 if (piecesMap.containsKey(pieceName)) {
  35.                     System.out.println(pieceName + " is already in the collection!");
  36.                 } else {
  37.                     //не съществува такава пиеса
  38.                     //пиеса -> списък с информация([0] -> composer, [1] -> tone)
  39.                     List<String> info = new ArrayList<>();
  40.                     info.add(composer);
  41.                     info.add(tone);
  42.  
  43.                     piecesMap.put(pieceName, info);
  44.                     System.out.printf("%s by %s in %s added to the collection!%n", pieceName, composer, tone);
  45.                 }
  46.             } else if (command.contains("Remove")) {
  47.                 //command = "Remove|{piece}".split("|") -> ["Remove", "{piece}"]
  48.                 String removedPiece = command.split("\\|")[1];
  49.                 //имаме такава пиеса
  50.                 if (piecesMap.containsKey(removedPiece)) {
  51.                     piecesMap.remove(removedPiece);
  52.                     System.out.printf("Successfully removed %s!%n", removedPiece);
  53.                 } else {
  54.                     //нямаме такава пиеса
  55.                     System.out.printf("Invalid operation! %s does not exist in the collection.%n", removedPiece);
  56.                 }
  57.             } else if (command.contains("ChangeKey")) {
  58.                 //command = "ChangeKey|{piece}|{new key}".split("|") -> ["ChangeKey", "{piece}", "{new tone}"]
  59.                 String pieceName = command.split("\\|")[1];
  60.                 String newTone = command.split("\\|")[2];
  61.  
  62.                 //нямаме такава пиеса
  63.                 if (!piecesMap.containsKey(pieceName)) {
  64.                     System.out.printf("Invalid operation! %s does not exist in the collection.%n", pieceName);
  65.                 } else {
  66.                     //имаме такава пиеса
  67.                     //пиеса -> списък с информация {composer, tone}
  68.                     List<String> currentInfo = piecesMap.get(pieceName);
  69.                     currentInfo.remove(1); //{composer}
  70.                     currentInfo.add(newTone); //{composer, newTone}
  71.                     piecesMap.put(pieceName, currentInfo);
  72.                     System.out.printf("Changed the key of %s to %s!%n", pieceName, newTone);
  73.                 }
  74.             }
  75.             command = scanner.nextLine();
  76.         }
  77.  
  78.         //пиеса -> списък с информация ([0] -> композитор, [1] -> тоналност)
  79.         //"{Piece} -> Composer: {composer}, Key: {key}"
  80.         //entry.getKey() -> име на пиесата
  81.         //entry.getValue() -> {composer, tone}.get(0) -> composer
  82.         //entry.getValue() -> {composer, tone}.get(1) -> tone
  83.         piecesMap.entrySet() //всички записи
  84.                 .forEach(entry -> System.out.printf("%s -> Composer: %s, Key: %s%n", entry.getKey(), entry.getValue().get(0), entry.getValue().get(1)));
  85.  
  86.     }
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement