Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

My program below is suppose to take in a infix expression and translate it to a

ID: 3550825 • Letter: M

Question

My program below is suppose to take in a infix expression and translate it to a postfix expression, but I need a way for the user to be able to input the expression using a scanner and output the postfix. Can someone help me with this and make any changes to my program to make it work? Thank you! I know there is no main method, but that is what I need help writing to make it run properly.


import java.util.Scanner;
import java.util.Stack;


public class InfixToPostfix {
    
    private final char ADD = '+';
    /** constant for subtraction symbol */
    private final char SUBTRACT = '-';
    /** constant for multiplication symbol */
    private final char MULTIPLY = '*';
    /** constant for division symbol */
    private final char DIVIDE = '/';
    
    private Stack stack;
    public String expression;
    public char a;
    char top;
    String result = "";
    int value2;
    
    public InfixToPostfix(String b){
        expression = b;
        int sizeOfExpression = expression.length();
        stack = new Stack();
    }
    
    
    public String operator()
    {
        
        for (int i = 0; i < expression.length(); i++)
            a = expression.charAt(i);
        switch (a)
        {
        case ADD:
        onStack(a,1);
        break;
        
        case SUBTRACT:
        onStack(a,1);
        break;
        
        case MULTIPLY:
        onStack(a,2);
        break;
        
        case DIVIDE:
        onStack(a,2);
        
        default:
        result = result + a;
        break;
        }
    
        while (!stack.isEmpty())
        {
            result = result + stack.pop();
            
        }
        return result;
}
    public void onStack(char a, int value1)
    {
        while (!stack.isEmpty())
        {
            top = (char) stack.pop();
            
        
        if (top == '+' || top == '-')
            value2 = 1;
        else value2 = 2;
        if (value2 < value1)
        {stack.push(top);
                }
        else
            result = result + top;
        
        }


stack.push(a);
}

    
    
    


    
        // TODO Auto-generated method stub

    }



Explanation / Answer

// sample run

// Enter infix(input empty to quit): 1+2-3*2

// Postfix: 12+32*-

//

// Enter infix(input empty to quit): 1*2-3*4

// Postfix: 12*34*-


import java.util.Scanner;

import java.util.Stack;



public class InfixToPostfix {


private final char ADD = '+';

/** constant for subtraction symbol */

private final char SUBTRACT = '-';

/** constant for multiplication symbol */

private final char MULTIPLY = '*';

/** constant for division symbol */

private final char DIVIDE = '/';


private Stack stack;

public String expression;

public char a;

char top;

String result = "";

int value2;


public InfixToPostfix(String b){

expression = b;

int sizeOfExpression = expression.length();

stack = new Stack();

}


public String operator() {


for (int i = 0; i < expression.length(); i++)

{

a = expression.charAt(i);

switch (a)

{

case ADD:

onStack(a,1);

break;

  

case SUBTRACT:

onStack(a,1);

break;

  

case MULTIPLY:

onStack(a,2);

break;

  

case DIVIDE:

onStack(a,2);

  

default:

result = result + a;

break;

}

}

  

while (!stack.isEmpty())

{

result = result + stack.pop();

  

}

return result;

}

  

public void onStack(char a, int value1)

{

while (!stack.isEmpty())

{

top = (char) stack.pop();

  

  

if (top == '+' || top == '-')

value2 = 1;

else value2 = 2;

  

if (value2 < value1)

{

stack.push(top);

break;

}

else

result = result + top;

  

}

  

stack.push(a);

}



public static void main(String[] args)

{

Scanner input = new Scanner(System.in);

String exp = "";

do

{

System.out.print("Enter infix(input empty to quit): ");

exp = input.nextLine().trim();

if (!exp.isEmpty())

{

InfixToPostfix infix = new InfixToPostfix(exp);

System.out.println("Postfix: " + infix.operator());

System.out.println();

}

  

} while (!exp.isEmpty());

}


}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote