I m getting a small error on my code. When I type in 8*(9-2). I am getting the wrong answer. I think it because of this if statement-
if ((token.getName().equals("rparen") ||
temp.equals("lparen")) ||
(token.getName().equals("rbracket")||
temp.equals("lparen")) ||
token.getName().equals ("rcurley"))
When I delete the temp.equals("lparen")
it works correctly. But when I type in another equation ([57 -50)*4+8]*4
, I am getting a 144
answer but it is supposed to be an error message.. Below is my method:
public double factor ()
{
double result = 0;
if (token.getName ().equals ("digit"))
{
result = token.getValue ();
System.out.print ("" + token.getValue () + " ");
token.getToken ();
}
else
if (token.getName ().equals ("lparen")||token.getName ().equals ("lbracket")||token.getName ().equals ("lcurley"))
{
String temp =token.getToken();
token.getToken ();
if ((token.getName ().equals ("rparen")||temp.equals("lparen"))||(token.getName ().equals ("rbracket")||temp.equals("lparen"))||token.getName ().equals ("rcurley"))
token.getToken ();
else
System.out.print ("Error - missing right paren");
}
else
System.out.print ("Error - invalid token");
return result;
} // method factor