当前位置: 首页 > 知识库问答 >
问题:

Java中的表达评价[副本]

傅元龙
2023-03-14

我在Java工作,我必须评估作为字符串给出的数学表达式。例如:

“5*8-9/7+5-8”

将导致

35.71.

我尝试了“Java评估图书馆”,但没有找到帮助。请告诉我怎样解决这种问题。我可以使用数据结构堆栈或队列来计算这样表达式,但我必须考虑运算符的优先级,因为乘法是在减法、加法之前完成的。什么数据结构最适合这种情况,记住时间复杂性。

共有1个答案

程谦
2023-03-14

在Java 6中,您可以使用内置的Javascript引擎。

ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine eng = sem.getEngineByName("JavaScript");
String str = "5*8-9/7+5-8";
System.out.println(eng.eval(str));

注意:eval()方法抛出一个ScriptException,您还需要以下导入。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
 类似资料:
  • 问题内容: 在我们的项目中,我们需要在没有任何数据库服务器的情况下评估SQL语句。您能否建议一个免费的Java库,该库能够评估基于数学的SQL语句并返回结果? 例如; 输入 输出 可能会被称为 问题答案: 如下面的代码所示,可以使用ZQL来实现。但是我严重建议您选择一个简单的嵌入式数据库,例如H2(此处为示例),而应使用它(项目运行状况要高得多)。 使用H2: 输出: 要使用它,请将其添加到您的:

  • 问题内容: 我正在寻找一种相对简单的方法(与编写解析器相比)来评估Java中的布尔表达式,并且我不想使用JEP库。 我有一个String表达式,例如:我的目标是用值替换变量。 有没有一种方法可以评估此​​表达式? 请记住,这可以是任何深度,因此编写解析器将非常复杂。 问题答案: 您可以使用Java6中的脚本引擎,并选择任何流行的脚本语言,例如Scala,Ruby,Python,Groovy和Jav

  • 问题内容: 假设我有以下表达式 Eclipse警告我,布尔表达式的第二个短语中可能为空。但是,我知道有些人会在第一个条件失败的情况下完全退出布尔表达式。Java是否正确?还是不能保证评估顺序? 问题答案: 但是,我知道有些人会在第一个条件失败的情况下完全退出布尔表达式。Java是否正确? 是的,这就是所谓的短路评估。操作员喜欢和是执行此类操作的操作员。 还是不能保证评估顺序? 不,可以保证评估的顺

  • 问题内容: 我需要在Javascript中评估用户输入的算术表达式,例如“ 2 *(3 + 4)”,但出于安全原因,我不想使用它。 我可以去除所有不是数字或运算符的字符,但是我不确定这是否安全,如果用户可以使用,,等功能,那会很好。 是否有进行算术表达式评估的Javascript库? 问题答案: 您可以尝试使用JavaScript Expression Evaluator: 该库是Raphael

  • import { Rater } from 'feui'; components: { [Rater.name]: Rater } 代码演示 基础用法 <fe-cell title="设置默认" inline-desc="总共5星如果不改变的话"> <fe-rater v-model="data3" slot="value"></fe-rater> </fe-cell>

  • 这是一个简单的程序,生成0到1000之间的两个随机数,然后让用户输入两个数字的和。即使您输入了正确的答案,并且求和与答案匹配,if语句也总是计算为不正确。