Advertisement
dimipan80

Exam 3. Simple Expression

Sep 15th, 2014
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.33 KB | None | 0 0
  1. import java.math.BigDecimal;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. public class _3_SimpleExpression {
  8.  
  9.     public static void main(String[] args) {
  10.         // TODO Auto-generated method stub
  11.         Scanner scan = new Scanner(System.in);
  12.         String inputLine = scan.nextLine().trim();
  13.  
  14.         Pattern numberPatt = Pattern.compile("\\d{1,10}([.]*([0-9]{0,9}))*");
  15.         Matcher matcher = numberPatt.matcher(inputLine);
  16.         ArrayList<BigDecimal> numbers = new ArrayList<>();
  17.         String numStr;
  18.         while (matcher.find()) {
  19.             numStr = matcher.group();
  20.             numbers.add(new BigDecimal(numStr));
  21.         }
  22.  
  23.         Pattern operatorPatt = Pattern.compile("\\+|\\-");
  24.         matcher = operatorPatt.matcher(inputLine);
  25.         ArrayList<String> operators = new ArrayList<>();
  26.         while (matcher.find()) {
  27.             operators.add(matcher.group());
  28.         }
  29.  
  30.         BigDecimal sumOfNumbers = numbers.get(0);
  31.         for (int i = 1; i < numbers.size(); i++) {
  32.             if (operators.get(i - 1).equals("+")) {
  33.                 sumOfNumbers = sumOfNumbers.add(numbers.get(i));
  34.             } else if (operators.get(i - 1).equals("-")) {
  35.                 sumOfNumbers = sumOfNumbers.subtract(numbers.get(i));
  36.             } else {
  37.                 throw new IllegalArgumentException("Invalid operator: "
  38.                         + operators.get(i - 1));
  39.             }
  40.         }
  41.  
  42.         System.out.println(sumOfNumbers.toPlainString());
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement