vladimirVenkov

EvaluateEditorial

Jun 21st, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.41 KB | None | 0 0
  1. import java.math.BigInteger;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5.     static BigInteger solve(String expression) {
  6.         BigInteger number = BigInteger.ZERO;
  7.         int i = 0;
  8.         while (i < expression.length() && Character.isDigit(expression.charAt(i))) {
  9.             number = number.multiply(BigInteger.valueOf(10));
  10.             number = number.add(BigInteger.valueOf(expression.charAt(i) - '0'));
  11.             i += 1;
  12.         }
  13.  
  14.         char op = expression.charAt(i);
  15.         ++i;
  16.         BigInteger other;
  17.  
  18.         if (expression.charAt(i) != '(') {
  19.             other = new BigInteger(expression.substring(i));
  20.         } else {
  21.             other = solve(expression.substring(i + 1, expression.length() - 1));
  22.         }
  23.  
  24.         BigInteger result = number;
  25.         if (op == '+') {
  26.             result = result.add(other);
  27.         } else if (op == '-') {
  28.             result = result.subtract(other);
  29.         } else if (op == '*') {
  30.             result = result.multiply(other);
  31.         }
  32.  
  33.         // System.out.println(expression);
  34.         // System.out.printf("%s %c %s = %s%n", number, op, other, result);
  35.         return result;
  36.     }
  37.  
  38.     public static void main(String[] args) {
  39.         Scanner in = new Scanner(System.in);
  40. //        String expression = "55*(10-(2+(4-12)))";
  41.         String expression = in.nextLine();
  42.         System.out.println(solve(expression));
  43.  
  44.     }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment