⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tokenoperator.java

📁 Java程序设计技巧与开发实例附书源代码。
💻 JAVA
字号:

public class TokenOperator
    extends Token
{
  private static String OPERATORS = "+-/*^()";
  private static int[] PRECEDENCE = { 1, 1, 2, 2, 3, 0, 9};
  private String token;

  public TokenOperator(String _token) throws TokenException
  {
    if (OPERATORS.indexOf(_token) >= 0)
    {
      token = _token;
    }
    else
    {
      throw new TokenException("invalid operator: " + _token);
    }
  }

  public TokenNumeric evaluate(double num1, double num2) throws TokenException
  {
    if (token.equals("+"))
    {
      return new TokenNumeric(num2 + num1);
    }
    else if (token.equals("-"))
    {
      return new TokenNumeric(num2 - num1);
    }
    else if (token.equals("*"))
    {
      return new TokenNumeric(num2 * num1);
    }
    else if (token.equals("/"))
    {
      return new TokenNumeric(num2 / num1);
    }
    else if (token.equals("^"))
    {
      return new TokenNumeric(Math.pow(num2, num1));
    }
    else
    {
      throw new TokenException("invalid token, can not evaluate");
    }
  }

  public boolean isOpenParen()
  {
    return token.equals("(");
  }

  public boolean isCloseParen()
  {
    return token.equals(")");
  }

  public int order()
  {
    return PRECEDENCE[OPERATORS.indexOf(token)];
  }

  public static boolean isValidOp(char op)
  {
    return (OPERATORS.indexOf(op) >= 0);
  }

  public String toString()
  {
    return "Operator: " + token;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -