Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Java (http://www.velocityreviews.com/forums/f30-java.html)
-   -   Help I'm stuck on a reverse polish calculation (http://www.velocityreviews.com/forums/t123868-help-im-stuck-on-a-reverse-polish-calculation.html)

ron 06-30-2003 02:27 PM

Help I'm stuck on a reverse polish calculation
 
have been stuck on this for several days now.
I am trying to create a reverse polish calculator and I'm stuck at an
intermediate stage.
This is what I know I have to do (just not sure how to do it to much of a
newbie :( )
I'm trying to call method, isOp, in the int method, evaluate. While in INT
evaluate method and in a while(hasNextToken) loop. Calling isOp on each
token, nextToken.

If it returns False, convert to (Integer) and push the token into a Stack.
True, you will pop the two tokens, convert them to (Integer) and store them
into x and y respectively. Do the Arithmetic operation and then push it back
to the stack.

I'm pretty sure the IsOp test is good just can't figure out the first part.


I am trying to get the following code to work:
----------------------
public class Evaluator {//tokList contains a list of tokens in postfix
notation.
//evaluate the expression and return the result
int x, y,resu;
int i,j=0;
public int evaluate (ArrayList tokList) {
while (tokList.hasNextToken()){
isOp (s);
(tokList.nextToken());

Stack eval =new Stack();

if (false)
eval.push(new Integer(s));
else
{ y=((Integer) eval.pop()).intValue();
x=((Integer) eval.pop()).intValue();
switch (s)
{
case '+':
resu=x+y;
break;
case '-':
resu=x-y;
break;
case '*':
resu=x*y;
break;
case '/':
resu=x/y;
break;
default:
resu=0;
}
eval.push(new Integer(resu));

}
}
resu= ((Integer) eval.pop()).intValue();
return resu;
}
}

// Check whether s represents an operator
private boolean isOp(String s) {
return( s.equals( " + " ) || s.equals( " -- " ) || s.equals( " / " ) ||
s.equals( " * " ) );

} //isOp


private boolean hprecedence(String a, String b) {
return !a.equals("(") && (b.equals("+") || b.equals("-")
|| a.equals("*") || a.equals("/"));
} //precedence

}

----------------------

Any help would be greatly appreciated, I'm told it's quite simple once you
know how but I don't know....




Stewart Gordon 07-02-2003 04:43 PM

Re: Help I'm stuck on a reverse polish calculation
 
ron wrote:

<snip>
> I am trying to get the following code to work:

<snip>

Try getting it to compile first.

Also, please indent properly if you'd like us to be able to read the
code in order to help you. This will also greatly help you to find the
obvious mistake.

Stewart.

--
My e-mail is valid but not my primary mailbox. Please keep replies on
on the 'group where everyone may benefit.



All times are GMT. The time now is 05:30 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.