我希望得到一个表达式作为用户使用Scanner或其他任何更合适的输入,并在一个堆栈中推送运算符,在另一个堆栈中推送操作数。
所以,如果我有类似的东西:52 + 3 *(2-1)
我想用堆栈来评估它。
我想把整行读成一个字符串并将其更改为char [],但问题是52将被读作两个单独的字符。
答案 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
}