Java中的表达式求值

夏黑26 2012-03-26 05:34:33
表达式形式如:a – b + c,该表达式是用一个字符串对象表示的,其中a、b和c都是int类型,现在已经知道a、b和c的值,如何求得表达式的值。
...全文
234 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
若鱼1919 2012-03-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lyqin2008 的回复:]

引用 3 楼 goldenfish1919 的回复:
Java code


public static void main(String[] args) throws ScriptException {
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByExt……
[/Quote]

System.out.println(se.eval("2+3-(-1)"));

负数的话,加个括弧就可以了
夏黑26 2012-03-26
  • 打赏
  • 举报
回复
使用开源包吧,自己写时间不允许,希望赐教,谢谢![Quote=引用 1 楼 ldh911 的回复:]
你是想自己写程序,还是想找个开源包?

Expr4J ExpressionJ

挺多的,自己搜索下吧。
[/Quote]
夏黑26 2012-03-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 goldenfish1919 的回复:]
Java code


public static void main(String[] args) throws ScriptException {
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByExtension("js");……
[/Quote]当被减数是负数时会抛出以下错误:
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: Invalid decerement operand.
若鱼1919 2012-03-26
  • 打赏
  • 举报
回复

public static void main(String[] args) throws ScriptException {
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByExtension("js");
System.out.println(se.eval("2+3-1"));
}
五哥 2012-03-26
  • 打赏
  • 举报
回复
看看数据结构的 栈 列表一章 第四章吧,估计会有收获
MiceRice 2012-03-26
  • 打赏
  • 举报
回复
你是想自己写程序,还是想找个开源包?

Expr4J ExpressionJ

挺多的,自己搜索下吧。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧