Advertisement
desislava_topuzakova

Untitled

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