我在思考分割字符串的方法时遇到问题。我已经完成的工作是将字符串拆分为多个字符。

所以如果表达式是gi356f它会给:

g
i
3
5
6
f

但我希望356就其自身而言被视为一个数字。而我正在处理的问题由看起来像(345+3)*/3的字符串组成

我尝试查看字符串中的当前字符和下一个字符,并尝试检查它是否为数字,如果是,请附加它们,但这会导致许多错误。例如,它只能处理两位数的长数字,也不太好,如果字符串为43,它将使用3两次。 (例如,一次打开43次,然后再次打开3次)。另外,如果末尾的表达式以给定字符串的数字结尾,则if也将被处理两次。

我不确定如何解决此问题。我认为也许使用正则表达式或扫描仪,但即使在网上看了一些较小示例的代码后也不确定如何使用它。

最佳答案

堆栈数据结构在这里可能会有所帮助。因此,您可以执行以下操作:

  • 扫描每个字符。
  • 检查字符是否为数字。如果是,则放在堆栈中。
  • 继续将char添加到堆栈中,直到获得任何非数字字符。
  • 一旦获得非数字字符,请从堆栈中取出所有数字字符并转换为数字。
  • 继续直到字符未完成。
  • 关于java - 如何在Java中从字符串中拆分数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8712314/

    10-11 22:26
    查看更多