将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的辣鸡代码:
代码烂忍忍吧……我是初学者。
谢!
回答:
把表达始中的xyz替换为数字
"x*5+x*3".replace('x', '6')
计算2的算数表达式
一般就是什么波兰式,逆波兰式,中缀表达式...的解析表达式再计算,算法都忘完了
还有就是你所的用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