Advertisement
meteor4o

JF-RegEx-Lab-05.NetherRealms

Jul 29th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.66 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.Scanner;
  6. import java.util.regex.Matcher;
  7. import java.util.regex.Pattern;
  8. import java.util.stream.Collectors;
  9.  
  10. public class NetherRealms {
  11.     public static void main(String[] args) {
  12.  
  13.         Scanner sc = new Scanner(System.in);
  14.  
  15.         List<String> demons = Arrays.stream(sc.nextLine().split("[, ]+"))
  16.                 .sorted(String::compareTo)
  17.                 .collect(Collectors.toList());
  18.  
  19.  
  20.         String healthRegex = "([^0-9+\\-\\*\\/.])";
  21.         Pattern healthPattern = Pattern.compile(healthRegex);
  22.  
  23.         String damageRegex = "(-?\\d+\\.?\\d*)";
  24.         Pattern damagePattern = Pattern.compile(damageRegex);
  25.  
  26.         String operationsRegex = "(\\*|\\/)";
  27.         Pattern operationsPattern = Pattern.compile(operationsRegex);
  28.  
  29.         for (String demon : demons) {
  30.             Matcher matcher = healthPattern.matcher(demon);
  31.             int health = 0;
  32.  
  33.             while (matcher.find()) {
  34.                 health += matcher.group(1).charAt(0);
  35.             }
  36.  
  37.             matcher = damagePattern.matcher(demon);
  38.             double damage = 0.0;
  39.  
  40.             while (matcher.find()) {
  41.                 damage += Double.parseDouble(matcher.group(1));
  42.             }
  43.  
  44.             matcher = operationsPattern.matcher(demon);
  45.             while (matcher.find()) {
  46.                 if (matcher.group(1).equals("*")) {
  47.                     damage *= 2;
  48.                 } else {
  49.                     damage /= 2;
  50.                 }
  51.             }
  52.  
  53.             System.out.printf("%s - %d health, %.2f damage%n", demon, health, damage);
  54.         }
  55.  
  56.  
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement