微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Java的递归表达式求值器

我要写一个只做加法和减法的表达式求值器.我有一个简单的算法来做到这一点;但是,我有一些实现问题.

我认为一个表达式(它是一个字符串)

"(" <expression1> <operator> <expression2> ")"

这是我的算法

String evaluate( String expression )

   if expression is digit
      return expression

   else if expression is "(" <expression1> <operator> <expression2> ")"
      cut the brackets out of it
      expression1 = evaluate( <expression1> )
      operator = <operator>
      expression2 = evaluate( <expression2> )

   if operator is +
      expression1 + expression2

   else if operator is -
      expression1 - expression2

我的问题是解析< expression1>< operator>和< expression2>从表达.我怎样才能做到这一点?

注意:我不是要求一个代码.我所需要的只是一个想法.

谢谢,

-Ali

解决方法

My problem is parsing <expression1>,
<operator> and <expression2> from the
expression

不要这样做,那么:)当你看到一个开头的括号,你的递归调用表达式.在表达结束时,要么找到另一个运算符(所以你根本不在表达式的末尾),要么是右括号,在这种情况下,您将从评估返回.

原文地址:https://www.jb51.cc/java/123307.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐