java中怎么将字符串(带运算符号加减乘除)转换成代数算式运算

我在做一个计算器,文本框中可以输出字符串,例如:“12+3.6*9”
怎么将这个字符串直接转换成算术式 12+3.6*9 运算输出结果?

这需要写很长一段代码。
1、判断表达式中有没有括号,如果有括号,转第二步。没有括号转第三步。
2、把括号内的内容提取出来,作为一个新的表达式。转第三步
3、判断表达式中有没有乘号和除号,有转第四步。没有转第六步。
4、把乘除号和乘除号前后的数字提取出来,得到新的表达式,转第五步。
5、提取数字和符号,判断表达式是乘号还是除号,然后计算结果。返回。
6、表达式没有乘除号,有加减号。转第七步。
7、提取包含加减的表达式中的符号和数据,计算结果,返回。

就是这个道理,这里只是描述了带括号和加减乘除的表达式,如果有更多的运算符,则根据运算符优先级处理。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-30

如果你只是想要结果的话可以利用数据库来进行计算

进行计算之前,运算符要记得替换,例如x换成*,同理可校验字符串是否是合法运算式

第2个回答  推荐于2017-10-22
java是无法直接解决,不要试图在这方面想了,但是javaScript中有一个eval函数是可以执行的,所以,可以通过其他途径执行javaScript就可以做到,而ScriptEngine是java的一个javaScript实现类 ,可以完成操作,稍有难度!本回答被网友采纳
第3个回答  推荐于2017-09-01
public static void main(String[] args) {
ScriptEngine se = new ScriptEngineManager().getEngineByName("JavaScript");
String str = "2*3-45/5+9+9%5";
try {
Double d = (Double) se.eval(str);
System.out.println(d);
} catch (ScriptException e) {
e.printStackTrace();
}
}本回答被提问者采纳
第4个回答  2017-10-22
当str里面的算式计算出来是整数的时候,编译器会报错,不能从Integer类型转换到Double类型。最好把d改成String类型,然后把(Double)se.eval(str)改成se.eval(str).toString。这样就不会有任何类似的问题了。
相似回答