Write a program to evaluate an arithmetic expression written in postfixed notati
ID: 3779628 • Letter: W
Question
Write a program to evaluate an arithmetic expression written in postfixed notation. The arithmetic expression will be input as a String (by the user) and will contain only integer operands. Use the following code sequences to parse (i.e., remove) the integers and the operators from the input string, mathExpression:
import java.util;
String thisToken;
StringTokenizer tokens = new StringTokenizer(mathExpression);
while(tokens.hasMoreTokens())
{ thisToken = tokens.nextToken();
//processing for thisToken goes here
}
My code wont run, I just need some help figuring out what the problem is. Code below.
Explanation / Answer
import java.util.*;
import javax.swing.*;
import java.util.Stack;
import java.util.StringTokenizer;
public class postfixed2
{
public static void main(String[] args) {
Stack<Double> pfStack = new Stack();
String thisToken;
double n1=2, n2=10, ans;
String mathExpression = JOptionPane.showInputDialog("Please enter a post fixed math expression: ");
//StringTokenizer tokens = new StringTokenizer(mathExpression,"*+/-");
String digits = mathExpression.replaceAll("[0-9]", ",");
//System.out.println("digits:::::"+digits);
StringTokenizer tokens = new StringTokenizer(digits,",");
while(tokens.hasMoreTokens()){
thisToken = tokens.nextToken();
//System.out.println("thisadadfsToken::::"+thisToken);
switch (thisToken){
case "+":
ans = n1 + n2;
pfStack.push(ans);
break;
case "-":
ans = n1 - n2;
pfStack.push(ans);
break;
case "*":
ans = n1 * n2;
pfStack.push(ans);
break;
case "/":
ans = n1 / n2;
pfStack.push(ans);
break;
default:
System.out.println("defalut:::"+thisToken);
pfStack.push(Double.parseDouble(thisToken));
break;
}
}
System.out.println("pop::::"+pfStack.pop());
}
}
//10 + 2 * 6
Input
10+2*6
output
pop::::12.0
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.