【问题标题】:Converting from string to integer java jdk 1.6 [duplicate]从字符串转换为整数java jdk 1.6 [重复]
【发布时间】:2013-02-27 16:25:54
【问题描述】:

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

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

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

提前致谢:)

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

【问题讨论】:

  • 您为什么期望一个简单的parseInt(意思是“将此数字转换为int”)能够处理整个表达式并进行计算?跨度>

标签: java type-conversion


【解决方案1】:

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

【讨论】:

  • 那我该怎么办?(另外请注意,我不能在转换之前简单地计算字符串。或者应该有一种方法可以将字符串转换为实际的 int(在地方)或者应该有一种方法来计算字符串然后将其转换为int。)
  • 为什么不能简单的计算一下结果呢?这个数学表达式是用户输入吗?如果你用更多你实际想要实现的东西来编辑你的问题,以及你的限制是什么,人们可能能够帮助你找到解决方案,而不是处于只能说“你正在使用错了。”
  • 你说我应该评估通常不可能的字符串。将字符串分解为标记和任何其他类型的非直接评估也是不可能的(不应该这样做)。除了我自己的答案,您能否提供一个有用的替代方案?
【解决方案2】:

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

另外,这里有一个使用 Java 的脚本功能来执行此操作的示例。 Algebra equation parser for java

【讨论】:

  • 已经回答了我自己的问题。 + 你的答案是错误的,因为将字符串分解为标记不是一种选择。
【解决方案3】:

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

String 不能在其内部计算数学运算,因为它只包含它所知道的字符以及其他任何字符。

【讨论】:

    【解决方案4】:

    好的,我自己找到了解决方案。使用 JDK 1.6,您可以使用 JavaScript,它在此类转换中与 C# 一样强大。太糟糕了,以至于使用 java 是如此痛苦。我认为大多数程序员使用 C++ 是有原因的。你可以查看the actual answer here,也别忘了点赞。

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 2011-07-01
      • 2015-03-26
      • 2013-01-17
      • 2010-11-21
      • 2013-10-06
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多