将String转换为可执行的数学表达式。

想用Java写一个简单的几何画板,可以输入函数然后利用这个函数画图像。
虽然可以用javax.Script包直接运算4+3,还可以

str = str.replaceAll("X",String.valueOf(getX()));

但是对于方便的几次方运算符“^”转义方面根本搞不清楚(正则表达式不太会用)。

我得想法是,能不能直接将输入的表达式,例如“x^2+4”,作为一个函数对象function保存起来。

function fun1 = new function("x^2+4");

int i = fun1(3);

//i=13

我用Script的辣鸡代码:
图片描述
代码烂忍忍吧……我是初学者。

谢!

回答:

  1. 把表达始中的xyz替换为数字 "x*5+x*3".replace('x', '6')

  2. 计算2的算数表达式

一般就是什么波兰式,逆波兰式,中缀表达式...的解析表达式再计算,算法都忘完了

Java 计算数学表达式(字符串解析求值工具)

还有就是你所的用js引擎来计算,真么想到还可以这么玩。对+-*/()的运算比较方便,但是涉及到平方,正弦余弦的就要转换成js里面的方法

String str = "x^2+4";

str = str.replaceAll("x\\^2", "Math.pow(9,2)");//假设x=9

System.out.println(engine.eval(str));

回答:

java 没法吧,自己手动写个平方根都要这样

public static double sqrt (double c) {

if (c < 0) return Double.NaN;

double err = 1e-15;

double t = c;

while( Math.abs(t - c/t) > err * t)

t = (c/t + t) /2.0;

return t;

}

当然有相关的api,你查下

以上是 将String转换为可执行的数学表达式。 的全部内容, 来源链接: utcz.com/p/177544.html

回到顶部