Advertisement
nocturnalmk

ExpressionEvaluator

Nov 4th, 2012
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.47 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Stack;
  5.  
  6. public class ExpressionEvaluator {
  7.  
  8.     public static int evaluateExpression(String expression){
  9.  
  10.         Stack<Integer> sob = new Stack<Integer>();
  11.         Stack<Integer> mnoz = new Stack<Integer>();
  12.         boolean mnozi = false;
  13.         int i, zbir = 0;
  14.         char c;
  15.         boolean in = false;
  16.         int br = 0;
  17.         int proiz;
  18.        
  19.         for (i=0; i<expression.length(); i++) {
  20.             c = expression.charAt(i);
  21.            
  22.             if (Character.isDigit(c)) {
  23.                
  24.                 if (!sob.isEmpty() && in) {
  25.                     br = sob.pop();
  26.                     br = br*10+Integer.parseInt(String.valueOf(c));
  27.                     sob.push(br);
  28.                 } else {
  29.                     sob.push(Integer.parseInt(String.valueOf(c)));
  30.                     in = true;
  31.                 }
  32.             }
  33.            
  34.             if (c == '*') {
  35.                 br = sob.pop();
  36.                 mnoz.push(br);
  37.                 in = false;
  38.             }
  39.             if (c == '+') {
  40.                
  41.                 if (!mnoz.isEmpty()) {
  42.                     proiz = 1;
  43.                     while (!mnoz.isEmpty()) {
  44.                         proiz = sob.pop() * mnoz.pop();
  45.                         sob.push(proiz);
  46.                     }
  47.                 }
  48.                
  49.                 in = false;
  50.             }
  51.         }
  52.        
  53.         if (!mnoz.isEmpty()) {
  54.            
  55.             br = sob.pop();
  56.             while (!mnoz.isEmpty()) {
  57.                 br *= mnoz.pop();
  58.             }
  59.             sob.push(br);
  60.         }
  61.  
  62.         while (!sob.isEmpty()) {
  63.             zbir += sob.pop();
  64.         }
  65.        
  66.         return zbir;
  67.     }
  68.    
  69.     public static void main(String[] args) throws IOException {
  70.         BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
  71.         System.out.println(evaluateExpression(input.readLine()));
  72.     }
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement