我理解如何编写没有括号的java算法。
但如果它涉及像[] or {} or ()
这样的括号。评估表达式的逻辑是什么?例如
([12*3] + (8/2)) + (5+5)/(4*2)-3+(7-3)
答案 0 :(得分:3)
你在Dijkstra的shunting-yard algorithm描述了一个奇怪的变体。 Dijkstra的版本在过去的50年里一直是常态,它处理分组操作(括号,括号,等。)就好了。
答案 1 :(得分:0)
评估算术表达式的常用方法是开发或查找算术表达式的语法,例如,请参阅此处http://www.csse.monash.edu.au/~lloyd/tildeProgLang/Grammar/Arith-Exp/,然后编写“递归下降解析器”代码。这些程序的结构非常接近语法。一旦你看到一个,你会欣赏这种方法。