java 中字符串能不能直接转换为数学表达式进行计算,不可以要怎么转换,求具体代码。简单点,最好带括号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 中字符串能不能直接转换为数学表达式进行计算,不可以要怎么转换,求具体代码。简单点,最好带括号相关的知识,希望对你有一定的参考价值。

可是可以,但是特别麻烦.

先要把中缀表达式,转换为后缀表达式,再计算后缀表达式.

通常把我们日常中看到的数学表达式称为中缀表达式如:(3+4)*5,
后缀表达式为计算机中容易计算的一种表达式.

A*B+C;转换为后缀表达式后为:AB*C+;
(A+B)*(C-D);转换为后缀表达式后为:AB+CD-*;
后缀表达式中没有括号,优先级为从左至右

后缀表达式较中缀表达式而言容易计算.
在中缀表达式中做一项运算要考虑优先级,所以要检查后面的字符
在后缀表达式中只要碰到运算符就可以运算了,直到表达式结束.

把中缀表达式转换为后缀表达式,再计算后缀表达式,这个两个过程都可以用数据结构(栈)来完成.

下面是一个C语言的例子.你看了应该会明白一点.(和JAVA差不多)
这是2008上半年程序员考试的题目,五个空分别为:
(1)prt++
(2)0
(3)*ptr-'0'
(4)&s,tnum
(5)*result

http://thea.cn/cs/learning/2008-5-26/84218-5.htm

不知道楼主为什么问这个问题,不可以用其它方式解决吗?
参考技术A 如果能计算的当然能直接转换 如:

public class lesson7d1
public static void main(String[] args)
String s1 = "12";
String s2 = "12";
int i = Integer.parseInt(s1)+Integer.parseInt(s2);
System.out.println(i);


但是如果 String s1 = "1a";那就不行啦 会抛出异常java.lang.NumberFormatException:本回答被提问者采纳
参考技术B 你是说能直接计算出字符串如"1+4-5"的值????应该不行哦,肯定要处理一下

将字符串转换为数学评估 [关闭]

【中文标题】将字符串转换为数学评估 [关闭]【英文标题】:Convert string to mathematical evaluation [closed] 【发布时间】:2012-02-24 23:04:06 【问题描述】:

好的,所以我要做的是使用字符串作为输入(例如“16*12+25”),将其转换为计算机可以理解的数学评估并返回评估值。我可能自己写这个,但它很可能需要相当长的时间,最后,它仍然不会像我想要的那样好,除非我想投入更多的时间。

所以我的问题是,是否有任何脚本、库或 API 可以为 C++ 执行此操作?我已经为 java、python 和 .NET 找到了一些。但是我没有使用这些语言中的任何一种,我希望尽可能长时间地使用 C++(希望在整个项目中)。你有什么好的想法或链接吗?

【问题讨论】:

您必须构建一个表达式解析器并实现所需的功能。 【参考方案1】:

我找到了我要找的东西!可下载的源代码是 C++ 和 CodeBlocks 项目。你可以在这里找到它:http://www.speqmath.com/tutorials/expression_parser_cpp/index.html

Jared 推荐的更复杂的表达式解析器:http://www.partow.net/programming/exprtk/index.html

【讨论】:

【参考方案2】:

C++ 没有为此内置任何东西;所有的表达式解析代码都属于编译器。您将需要使用一些外部库。快速谷歌搜索会找到muParser,这看起来很合理。

【讨论】:

+1 用于 muParser。我们一直在我们的神经模拟器 MOOSE 中使用它,没有任何问题。它的速度非常好。

以上是关于java 中字符串能不能直接转换为数学表达式进行计算,不可以要怎么转换,求具体代码。简单点,最好带括号的主要内容,如果未能解决你的问题,请参考以下文章

将字符串转换为数学方程[重复]

将字符串转换为数学评估 [关闭]

将元组条目变量转换为数学问题的 int 的问题

数据类型转换

如何将简单的计算机算法转换为数学函数以确定大 o 符号?

Java学习之Arrays数组