-1

好吧,我最近开始学习java编码,还有一些需要解决的问题。

我只是在转换内部带有特殊参数的字符串时遇到了这个问题(例如“3 ^ 5 + 7 * 10”或“(1/2)”)。在这种情况下, Integer.parseInt 返回一个错误,指出不支持该数字。实际代码是:

int i = Integer.parseInt("5*3^2+3^2");

提前致谢 :)

更新:我可以使用另一个库来进行转换吗,AFAIK 这在 C# 中曾经非常容易。

4

4 回答 4

4

您不能将这样的表达式发送到 parseInt。它旨在将给定的数字字符串表示形式转换为整数。您必须获得表达式的解决方案,然后将结果传递给 parseInt。尽管如果您在 java 代码中获得解决方案,那么无论如何它都会是一个数字。

于 2013-02-27T16:29:30.607 回答
2

您将不得不自己编写代码来解析字符串并对其进行评估,我会亲自将其分解为标记并对其进行评估。

或者,这里有一个例子,有人使用 Java 的脚本功能来做到这一点。 java的代数方程解析器

于 2013-02-28T10:32:02.357 回答
0

这是因为 parseInt 将解析一个正确的数字字符串值。这是一个完整的数学表达式。

String 无法在其内部计算数学运算,因为它仅包含它所知道的字符和其他任何字符。

于 2013-02-27T16:29:47.160 回答
0

好的,自己找到了解决方案。使用 JDK 1.6,您可以使用 JavaScript,它在此类转换中与 C# 一样强大。太糟糕了,以至于使用 java 是如此痛苦。我认为大多数程序员使用 C++ 是有原因的。您可以在此处查看实际答案,也不要忘记投票。

于 2013-02-27T18:27:00.340 回答