Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class RPNevaluator {
- private StringBuffer outputBuffer;
- private Stack <Double> myStack = new Stack <Double> ();
- RPNevaluator( String inputString ) {
- outputBuffer = new StringBuffer();
- StringTokenizer sTok = new StringTokenizer ( inputString, "+-/* ", true);
- String temp;
- double valueA;
- double valueB;
- while (sTok.hasMoreTokens()) {
- temp = ( String ) sTok.nextElement();
- switch ( temp.charAt(0)) {
- case '+':
- valueA = ( myStack.pop());
- valueB = ( myStack.pop());
- myStack.push( valueB + valueA );
- break;
- case '-':
- valueA = ( myStack.pop());
- valueB = ( myStack.pop());
- myStack.push( valueB + valueA );
- break;
- case '*':
- valueA = ( myStack.pop());
- valueB = ( myStack.pop());
- myStack.push( valueB + valueA );
- break;
- case '/':
- valueA = ( myStack.pop());
- valueB = ( myStack.pop());
- myStack.push( valueB + valueA );
- break;
- case ' ':
- break;
- default:
- outputBuffer.append( temp + " " );
- break;
- }
- }
- while( !myStack.isEmpty() ) {
- outputBuffer.append(myStack.pop() + " ");
- }
- }
- public static void main(String[] args) {
- RPNevaluator test1 = new RPNevaluator( "5 1 2 + 4 * 3 + - ");
- System.out.println(test1.outputBuffer);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement