Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.94 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class PerformInfixExpression {
  4.     private static Stack<String> stack = new Stack<>();
  5.     private static final String OPERATORS = "*/+-";
  6.  
  7.  
  8.     public static String evaluateInfix(String exps){
  9.         //Removes all spaces from expression
  10.         exps = exps.replaceAll("\\s+", "");
  11.  
  12.         //Breaks up expression into tokens
  13.         StringTokenizer tokens = new StringTokenizer(exps, "()*/+-", true);
  14.  
  15.  
  16.         while(tokens.hasMoreTokens()){
  17.             String tkn = tokens.nextToken();
  18.  
  19.  
  20.             if(tkn.equals("(")
  21.                     || tkn.matches("[0-9]+")
  22.                     || tkn.equals("*")
  23.                     || tkn.equals("/")
  24.                     || tkn.equals("+")
  25.                     || tkn.equals("-")){stack.push(tkn);}
  26.             else if(tkn.equals(")")){
  27.                 try {
  28.                     int op2 = Integer.parseInt(stack.pop());
  29.  
  30.                     String operand = stack.pop();
  31.  
  32.                     int op1 = Integer.parseInt(stack.pop());
  33.  
  34.                     if(!stack.empty()){stack.pop();}
  35.  
  36.                     int result = 0;
  37.  
  38. //                    switch(operand){
  39. //                        case "*":
  40. //                            result = op1*op2;
  41. //                            break;
  42. //                        case "/":
  43. //                            result = op1/op2;
  44. //                            break;
  45. //                        case "+":
  46. //                            result = op1+op2;
  47. //                            break;
  48. //                        case "-":
  49. //                            result = op1-op2;
  50. //                            break;
  51. //                        default:
  52. //                            break;
  53. //                    }
  54.  
  55.                     if(operand.equals("*")){
  56.                         result = op1*op2;
  57.                     } else if(operand.equals("/")){
  58.                         result = op1/op2;
  59.                     } else if(operand.equals("+")){
  60.                         result = op1+op2;
  61.                     } else if(operand.equals("-")) {
  62.                         result = op1 - op2;
  63.                     }
  64.  
  65.                     //Pushes result into stack
  66.                     stack.push(result+"");
  67.                 } catch (Exception e) {
  68.                     e.printStackTrace();
  69.                     break;
  70.                 }
  71.             }
  72.         }
  73.         String finalResult = "";
  74.         try {
  75.             finalResult = stack.pop();
  76.         } catch (Exception e) {
  77.             e.printStackTrace();
  78.         }
  79.         return finalResult;
  80.     }
  81.    
  82.  
  83.     public static void main(String a[]){
  84.         String expr = "((2*5)+(6/2))";
  85.         System.out.println("Expression: "+expr);
  86.         System.out.println("Final Result: "+evaluateInfix(expr));
  87.         expr = "(((2 * 5) - (1 * 2)) / (11 - 9))";
  88.         System.out.println("Expression: "+expr);
  89.         System.out.println("Final Result: "+evaluateInfix(expr));
  90.  
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement