Java program to convert from infix to postfix expression RAT
Solution
import java.util.Scanner;
 import java.io.IOException;
public class infix_to_post {
 private Stack theStack;
 private String input;
 private String output = \"\";
 public infix_to_post(String in) {
 input = in;
 int stackSize = input.length();
 theStack = new Stack(stackSize);
 }
 public String do_change() {
 for (int j = 0; j < input.length(); j++) {
 char ch = input.charAt(j);
 switch (ch) {
 case \'+\':
 case \'-\':
 gotOper(ch, 1);
 break;
 case \'*\':
 case \'/\':
 gotOper(ch, 2);
 break;
 case \'(\':
 theStack.push(ch);
 break;
 case \')\':
 gotParen(ch);
 break;
 default:
 output = output + ch;
 break;
 }
 }
 while (!theStack.isEmpty()) {
 output = output + theStack.pop();
 }
 System.out.println(output);
 return output;
 }
 public void gotOper(char opThis, int prec1) {
 while (!theStack.isEmpty()) {
 char opTop = theStack.pop();
 if (opTop == \'(\') {
 theStack.push(opTop);
 break;
 }
 else {
 int prec2;
 if (opTop == \'+\' || opTop == \'-\')
 prec2 = 1;
 else
 prec2 = 2;
 if (prec2 < prec1) {
 theStack.push(opTop);
 break;
 }
        else
 output = output + opTop;
 }
 }
 theStack.push(opThis);
 }
 public void gotParen(char ch){
 while (!theStack.isEmpty()) {
 char chx = theStack.pop();
 if (chx == \'(\')
 break;
 else
 output = output + chx;
 }
 }
 public static void main(String[] args)
 throws IOException {
 String input ;
 String output;
    System.out.println(\" NOTE : Entering empty line will end your program execution!! \  \");
    while(1)
    {
        System.out.println(\" Please enter the infix expression : \  \");
        Scanner user_input = new Scanner( System.in );
        input=user_input.next( );
        if(input==\'\ \')
            System.exit(0);
        else
        {
        infix_to_post objj = new infix_to_post(input);
        output = objj.do_change();
        System.out.println(\"Postfix is \" + output + \'\ \');
        }
 }
 class Stack {
 private int maxSize;
 private char[] stackArray;
 private int top;
 public Stack(int max) {
 maxSize = max;
 stackArray = new char[maxSize];
 top = -1;
 }
 public void push(char j) {
 stackArray[++top] = j;
 }
 public char pop() {
 return stackArray[top--];
 }
 public char peek() {
 return stackArray[top];
 }
 public boolean isEmpty() {
 return (top == -1);
 }
 }
 }



