Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class PerformInfixExpression {
- private static Stack<String> stack = new Stack<>();
- private static final String OPERATORS = "*/+-";
- public static String evaluateInfix(String exps){
- //Removes all spaces from expression
- exps = exps.replaceAll("\\s+", "");
- //Breaks up expression into tokens
- StringTokenizer tokens = new StringTokenizer(exps, "()*/+-", true);
- while(tokens.hasMoreTokens()){
- String tkn = tokens.nextToken();
- if(tkn.equals("(")
- || tkn.matches("[0-9]+")
- || tkn.equals("*")
- || tkn.equals("/")
- || tkn.equals("+")
- || tkn.equals("-")){stack.push(tkn);}
- else if(tkn.equals(")")){
- try {
- int op2 = Integer.parseInt(stack.pop());
- String operand = stack.pop();
- int op1 = Integer.parseInt(stack.pop());
- if(!stack.empty()){stack.pop();}
- int result = 0;
- // switch(operand){
- // case "*":
- // result = op1*op2;
- // break;
- // case "/":
- // result = op1/op2;
- // break;
- // case "+":
- // result = op1+op2;
- // break;
- // case "-":
- // result = op1-op2;
- // break;
- // default:
- // break;
- // }
- if(operand.equals("*")){
- result = op1*op2;
- } else if(operand.equals("/")){
- result = op1/op2;
- } else if(operand.equals("+")){
- result = op1+op2;
- } else if(operand.equals("-")) {
- result = op1 - op2;
- }
- //Pushes result into stack
- stack.push(result+"");
- } catch (Exception e) {
- e.printStackTrace();
- break;
- }
- }
- }
- String finalResult = "";
- try {
- finalResult = stack.pop();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return finalResult;
- }
- public static void main(String a[]){
- String expr = "((2*5)+(6/2))";
- System.out.println("Expression: "+expr);
- System.out.println("Final Result: "+evaluateInfix(expr));
- expr = "(((2 * 5) - (1 * 2)) / (11 - 9))";
- System.out.println("Expression: "+expr);
- System.out.println("Final Result: "+evaluateInfix(expr));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement