我试图编写一个Java例程,从string
值计算数学表达式,如下所示:
“5+3”
“10-40”
“(1+10)*3”
我想避免很多if-then-else语句。我怎么能这么做?
对于JDK1.6,您可以使用内置的Javascript引擎。
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
public class Test {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "40+2";
System.out.println(engine.eval(foo));
}
}
问题内容: Java中有没有一种方法可以从以下数学表达式获得结果: 另一方面,解析算术表达式的最佳方法是什么? 问题答案: 你可以将其传递给如下所示: 你将要确保评估的字符串来自受信任的来源,并采取通常的预防措施,否则,它将立即起作用。 如果你想采用更复杂(但更安全)的方法,则可以使用ANTLR(我怀疑这是一个数学语法的起点),然后实际自己编译/解释该语句。
问题内容: 这将返回以下错误: 我知道可以解决此问题,但是难道没有更好,更重要的是更安全的方法来评估存储在字符串中的数学表达式吗? 问题答案: 可用于解析数学表达式。特别是, 显示了如何解析基本算术表达式。下面,我将fourFn重新包装为一个数字解析器类,以便于重用。
问题内容: 我想从字符串中计算数学表达式。我已经读过解决方案是使用eval()。但是当我尝试运行以下代码时: 它给了我以下错误: 解析错误:语法错误,C:\ xampp \ htdocs \ eclipseWorkspaceWebDev \ MandatoryHandinSite \ tester.php(4)中意外的$ end:第1行上的eval()代码 有人知道解决这个问题的方法吗? 问题答案
给定一个包含0个或多个与正则表达式匹配的子字符串的任意字符串,如何计算该字符串中与正则表达式匹配的子字符串的字符数? 示例: 给定匹配任何电子邮件地址和字符串“I have two email address:email@gmail.com and email@hotmail.com”的正则表达式,将返回int值32(“email@gmail.com”加上“email@hotmail.com”中的
Evaluates simple math expression like 2*4 or 10/2 and outputs its result. You can use \ operator which is equivalent to round(a/b). 计算简单的数学表达式,比如2*4 或 10/2,并输出结果。\ 操作符结果同 round(a/b)。 Very useful in CS
问题内容: 在Java中如何计算一个字符串表达式?,例如:”3+2” 问题答案: 使用JDK1.6,您可以使用内置的Javascript引擎。