我最近开始学习java编码,还有一些需要解决的问题。
我刚刚遇到这个问题,当转换一个内部带有特殊参数的字符串时(例如“3 ^ 5 + 7 * 10”或“(1/2)”)。在这种情况下,Integer.parseInt会返回一个错误,指出该数字不受支持。 而实际的代码是:
int i = Integer.parseInt("5*3^2+3^2");
提前致谢:)
更新:我是否可以使用另一个库进行转换,AFAIK过去在C#中非常容易。
答案 0 :(得分:4)
您不能将这样的表达式发送到parseInt。它旨在将数字的给定String表示形式转换为Integer。您必须获得表达式的解决方案,然后然后将结果传递给parseInt。虽然如果你在java代码中得到解决方案,那么无论如何它都是一个数字。
答案 1 :(得分:2)
您将不得不自己编写代码解析字符串并对其进行评估,我会亲自将其分解为令牌并对其进行评估。
另外,这里有一个使用Java的脚本功能来做这件事的人的例子。 Algebra equation parser for java
答案 2 :(得分:0)
这是因为parseInt将解析正确的数字字符串值。这是一个完整的数学表达式。
String不能在其内部计算数学运算,因为它只知道它所知道的字符和其他任何东西。
答案 3 :(得分:0)
好的,我自己找到了解决方案。使用JDK 1.6,您可以使用JavaScript,这种转换与C#一样强大。如此糟糕,使用java就是这样的痛苦。我认为大多数程序员使用C ++是有原因的。您可以查看the actual answer here,也不要忘记赞成这一点。