将运算符和操作数输入到两个不同的堆栈中

时间:2015-02-13 15:39:47

标签: java string java.util.scanner

我希望得到一个表达式作为用户使用Scanner或其他任何更合适的输入,并在一个堆栈中推送运算符,在另一个堆栈中推送操作数。

所以,如果我有类似的东西:52 + 3 *(2-1)
我想用堆栈来评估它。

我想把整行读成一个字符串并将其更改为char [],但问题是52将被读作两个单独的字符。

1 个答案:

答案 0 :(得分:0)

您可以立即读取整行,然后使用StringTokenizer获取各个运算符/操作数。

    String example = "52+3*(2-1)";
    String delim = "[/*-+()]";

    StringTokenizer st = new StringTokenizer(example, delim, true);
    while(st.hasMoreTokens())
    {
        // check if it's an operator or operand and add it to the appropriate stack
    }