我是java的新手,我正在构建一个计算器,它需要一个等式并对其进行评估.
我正在使用Scanner方法获取输入,但这意味着我的输入是扫描仪类型.我应该怎么做这个输入,以便我可以评估它?一旦我可以评估它,我怎样才能优先考虑括号?
例如,对于等式(5 *(4 3))* 2,我想首先评估(4 3)的程序,然后将它乘以4,然后将所有这些乘以2.
非常感谢.
解决方法:
你需要的是Dijkstra的Shunting Yard Algorithm.这将in-fix数学符号转换为修复后符号,它巧妙地排除了运算符优先级和括号的所有问题,因为后修复符号不需要其中任何一个.*页面在C中有一个完整的例子,可以翻译成Java.