desislava_topuzakova

Untitled

Sep 23rd, 2021
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.80 KB | None | 0 0
  1. package Test;
  2.  
  3. import java.util.*;
  4.  
  5. public class Test {
  6. public static void main(String[] args) {
  7. Scanner scanner = new Scanner(System.in);
  8. //име на човек -> списък с карти (уникални карти -> set)
  9. LinkedHashMap<String, Set<String>> playersCards = new LinkedHashMap<>();
  10.  
  11. String input = scanner.nextLine();
  12.  
  13. while (!input.equals("JOKER")) {
  14. //input = "Peter: 2C, 4H, 9H, AS, QS" -> ["Peter", "2C, 4H, 9H, AS, QS"]
  15. String name = input.split(": ")[0]; //името на играча
  16. String cardsStr = input.split(": ")[1]; //"2C, 4H, 9H, AS, QS"
  17. String[] cardsArr = cardsStr.split(", "); //["2C", "4H", "9H", "AS", "QS"]
  18. Set<String> cards = new HashSet<>(); //изтеглените карти
  19. Collections.addAll(cards, cardsArr);
  20. //for (String card : cardsArr) {
  21. //cards.add(card);}
  22.  
  23. //името го има
  24. if (playersCards.containsKey(name)) {
  25. //взимаме текушия сет от карти
  26. Set<String> currentCards = playersCards.get(name);
  27. //към текущия сет добавяме новия
  28. currentCards.addAll(cards);
  29. playersCards.put(name, currentCards);
  30. } else {
  31. //името да го няма
  32. playersCards.put(name, cards);
  33. }
  34. input = scanner.nextLine();
  35. }
  36.  
  37. playersCards.entrySet().forEach(entry -> {
  38. //entry: име на играч -> списък с карти
  39. String name = entry.getKey();
  40. Set<String> cards = entry.getValue();
  41. int points = getCardsPoints(cards);
  42. System.out.printf("%s: %d%n", name, points);
  43. });
  44.  
  45. }
  46.  
  47. private static int getCardsPoints(Set<String> cards) {
  48. Map<Character, Integer> pointsMap = getPartOfCardValue();
  49. int sumCards = 0;
  50. //2C, 4H, 9H, AS, QS
  51. //всяка карта -> намирам точките -> добавям към сумата
  52. for (String card : cards) {
  53. int points = 0;
  54. //"[номер][тип]" -> "2C" "10D"
  55. //номер: 2(2), 3(3), 4(4), 5(5), 6(6), 7(7), 8(8), 9(9), 10(10), J(11), Q(12), K(13), A(14)
  56. //тип: S(4), H(3), D(2), C(1)
  57. //точки за карта = точки от номер * точки от тип
  58. if (card.contains("10")) {
  59. //картата е 10 (card = "10C" -> номер = 10
  60. char type = card.charAt(2);
  61. points = 10 * pointsMap.get(type);
  62. } else {
  63. //всички карти без 10-ка
  64. //card = "2D"
  65. char number = card.charAt(0);
  66. char type = card.charAt(1);
  67. points = pointsMap.get(number) * pointsMap.get(type);
  68. }
  69. sumCards += points;
  70. }
  71. return sumCards;
  72. }
  73.  
  74. //метод връща Map: номер / тип на картата -> брой точки
  75. private static Map<Character, Integer> getPartOfCardValue () {
  76. Map<Character, Integer> points = new HashMap<>();
  77. points.put('2', 2);
  78. points.put('3', 3);
  79. points.put('4', 4);
  80. points.put('5', 5);
  81. points.put('6', 6);
  82. points.put('7', 7);
  83. points.put('8', 8);
  84. points.put('9', 9);
  85. points.put('J', 11);
  86. points.put('Q', 12);
  87. points.put('K', 13);
  88. points.put('A', 14);
  89. points.put('S', 4);
  90. points.put('H', 3);
  91. points.put('D', 2);
  92. points.put('C', 1);
  93. return points;
  94.  
  95. }
  96.  
  97.  
  98. }
  99.  
Advertisement
Add Comment
Please, Sign In to add comment