比较字符串值,中缀到后缀

时间:2014-03-28 20:46:23

标签: java stack calculator postfix-notation infix-notation

    Stack<String> s = new Stack<String>();
    String[] tokens = infix.split(" ");

    StringBuilder output = new StringBuilder();

    Integer.getInteger("+", 1);
    Integer.getInteger("-", 1);
    Integer.getInteger("*", 2);
    Integer.getInteger("/", 2);

    for (int i = 0; i < tokens.length; i++)
    {
        if (tokens[i].matches("[0-9]"))
        {
            output.append(tokens[i] + " ");
        }
        else if (tokens[i].equals("+") || tokens[i].equals("-") || tokens[i].equals("*") || tokens[i].equals("/"))
        {
            if(tokens[i] <= s.peek())
            {

            }
        }
    }

    return output.toString();

我正在使用后缀到后缀计算器,我试图说明当前令牌值是否小于或等于堆栈顶部令牌的值。我使用Integer.valueOf将数值设置为特定标记,但不能使用&#34;&lt; =&#34;因为它们是字符串,我是否需要使用String.greaterThan()[虚构]方法?

1 个答案:

答案 0 :(得分:0)

if (tokens[i].equals("-") || tokens[i].equals("+") || tokens[i].equals(s.peek)) 

这会执行您尝试做的事情,尽管它可能不是咸味的。

我会坚持使用if语句并忘记分配权重,但如果你坚持,下面的内容将有效。

另一个选择是将每个运算符映射到数值,如果您需要为运算符赋予数值:

HashMap<String, Integer> operators = new HashMap<String, Integer>();

operators.put("+", 1);
operators.put("-", 1);
operators.put("*", 2);
operators.put("/", 2);