petar088

13.Nether Realms

May 6th, 2019
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. package Fundamentals._28_Text_Regex_Exercise;
  2.  
  3. import java.util.*;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. public class _13_Nether_Realms {
  8. public static void main(String[] args) {
  9. Scanner sc = new Scanner(System.in);
  10.  
  11. String[] input = sc.nextLine().split(",\\s*");
  12. double damage = 0;
  13. double health = 0;
  14.  
  15. Map<String, List<Double>> demonsInfo = new TreeMap<>();
  16.  
  17.  
  18. String regexDamage = "[+-]?\\d+\\.?\\d*";
  19. String regexHealth = "[^0-9*/+\\-.]";
  20.  
  21.  
  22.  
  23. for (int i = 0; i < input.length; i++) { //each demon
  24.  
  25. String demon = input[i].replaceAll(" ","");
  26.  
  27.  
  28.  
  29. Pattern pattern = Pattern.compile(regexHealth);
  30. Matcher matcher = pattern.matcher(demon);
  31.  
  32. int countMultiply = 0;
  33. int countDivide = 0;
  34.  
  35.  
  36.  
  37. for (int i1 = 0; i1 < demon.length(); i1++) {
  38.  
  39.  
  40. if ((char) demon.charAt(i1) == Character.valueOf('*')) {
  41. countMultiply++;
  42. } else if ((char) demon.charAt(i1) == '/') {
  43. countDivide++;
  44. }
  45. }
  46.  
  47. while (matcher.find()) { // Making Health sum
  48.  
  49.  
  50. health += matcher.group().charAt(0);
  51.  
  52.  
  53. }
  54. Pattern pattern1 = Pattern.compile(regexDamage);
  55. Matcher matcher1 = pattern1.matcher(demon);
  56.  
  57. while (matcher1.find()) {
  58.  
  59.  
  60. damage += Double.parseDouble(matcher1.group());
  61.  
  62.  
  63. }
  64.  
  65.  
  66. if (countMultiply > 0) {
  67. for (int i1 = 0; i1 < countMultiply; i1++) {
  68. damage = damage * 2;
  69. }
  70.  
  71. }
  72. if (countDivide > 0) {
  73. for (int i1 = 0; i1 < countMultiply; i1++) {
  74. damage = damage / 2;
  75. }
  76. }
  77. List<Double> healthDamage = new ArrayList<>();
  78. healthDamage.add(health);
  79. healthDamage.add(damage);
  80. demonsInfo.put(demon, healthDamage);
  81.  
  82. damage = 0;
  83. health = 0;
  84. }
  85.  
  86. for (Map.Entry<String, List<Double>> entry : demonsInfo.entrySet()) {
  87. System.out.println(String.format("%s - %.0f health, %.2f damage", entry.getKey(), entry.getValue().get(0), entry.getValue().get(1)));
  88. }
  89.  
  90. }
  91. }
Add Comment
Please, Sign In to add comment