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

我在做一个计算器,文本框中可以输出字符串,例如:“12+3.6*9”怎么将这个字符串直接转换成算术式12+3.6*9运算输出结果?... 我在做一个计算器,文本框中可以输出字符串,例如:“12+3.6*9”
怎么将这个字符串直接转换成算术式 12+3.6*9 运算输出结果?
展开
 我来答
路漫漫的教学笔记
2015-04-21 · TA获得超过399个赞
知道小有建树答主
回答量:306
采纳率:0%
帮助的人:135万
展开全部
这需要写很长一段代码。
1、判断表达式中有没有括号,如果有括号,转第二步。没有括号转第三步。
2、把括号内的内容提取出来,作为一个新的表达式。转第三步
3、判断表达式中有没有乘号和除号,有转第四步。没有转第六步。
4、把乘除号和乘除号前后的数字提取出来,得到新的表达式,转第五步。
5、提取数字和符号,判断表达式是乘号还是除号,然后计算结果。返回。
6、表达式没有乘除号,有加减号。转第七步。
7、提取包含加减的表达式中的符号和数据,计算结果,返回。

就是这个道理,这里只是描述了带括号和加减乘除的表达式,如果有更多的运算符,则根据运算符优先级处理。
单振龙_
2017-11-30
知道答主
回答量:4
采纳率:0%
帮助的人:2.1万
展开全部

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青鸟中关村专家
推荐于2017-10-22 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部
java是无法直接解决,不要试图在这方面想了,但是javaScript中有一个eval函数是可以执行的,所以,可以通过其他途径执行javaScript就可以做到,而ScriptEngine是java的一个javaScript实现类 ,可以完成操作,稍有难度!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自媒体自学
推荐于2017-09-01 · TA获得超过120个赞
知道答主
回答量:46
采纳率:0%
帮助的人:26.2万
展开全部
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();
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7099c75
2017-10-22
知道答主
回答量:1
采纳率:0%
帮助的人:948
引用cht310的回答:
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();
}
}
展开全部
当str里面的算式计算出来是整数的时候,编译器会报错,不能从Integer类型转换到Double类型。最好把d改成String类型,然后把(Double)se.eval(str)改成se.eval(str).toString。这样就不会有任何类似的问题了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式