In this tutorial, you will learn how to convert expression from infix to postfix. The given code accepts the expression from the user and display its postfix expression by using Stacks.
Example:
import java.util.Scanner;
import java.util.Stack;
public class InfixToPostfix {
private String infix;
private String postfix = "";
public void convertString(String a){
String str = "";
infix = a;
Stack<String> stack = new Stack<String>();
for(int i = 0; i < infix.length(); i++){
str = infix.substring(i,i+1);
if(str.matches("[a-zA-Z]|\\d"))
postfix += str;
else if (isOperator(str)){
if (stack.isEmpty()){
stack.push(str);
}
else{
String stackTop = stack.peek();
while (getPrecedence(stackTop,str).equals(stackTop)&& !(stack.isEmpty())){
postfix += stack.pop();
if (!(stack.isEmpty()))
stackTop = stack.peek();
}
stack.push(str);
}
}
}
while(!(stack.isEmpty()))
postfix += stack.pop();
System.out.println("Postfix of the expression is: " + postfix);
}
private boolean isOperator(String ch){
String operators = "*/%+-";
if (operators.indexOf(ch) != -1)
return true;
else
return false;
}
private String getPrecedence(String op1, String op2){
String multiplicativeOps = "*/%";
String additiveOps = "+-";
if ((multiplicativeOps.indexOf(op1) != -1) && (additiveOps.indexOf(op2) != -1))
return op1;
else if ((multiplicativeOps.indexOf(op2) != -1) && (additiveOps.indexOf(op1) != -1))
return op2;
else if((multiplicativeOps.indexOf(op1) != -1) && (multiplicativeOps.indexOf(op2) != -1))
return op1;
else
return op1;
}
public static void main(String[] args) {
System.out.println("Enter an expression in the Infix form:");
Scanner scanner = new Scanner(System.in);
String expression = scanner.nextLine();
new InfixToPostfix().convertString(expression);
}
}
If you are facing any programming issue, such as compilation errors or not able to find the code you are looking for.
Ask your questions, our development team will try to give answers to your questions.