【问题标题】:Calculating a sum thats in a String variable in Java在Java中计算字符串变量中的总和
【发布时间】:2013-10-19 19:25:55
【问题描述】:

所以我有一个作业,它适用于堆栈和中缀到后缀计算。现在我有了 Postfix 计算的中缀,但是.. 这部分说我必须计算 4 个随机数和随机运算符。

所以我有一个数字 1-9 的数组和一个由 +、- 和 * 组成的 char 数组。

我可以进行随机计算并将其放入字符串对象中,但我似乎无法以正确的方式将计算结果存储在整数变量中。使用适当的运算符优先级.. 我尝试了一些 Switch 和 If-else 语句,但我再也找不到出路了。

我有一个 Stack 和一个 InToPost 课程。

代码中的计算如下所示:

String calculation = Integer.toString(numbers[random.nextInt(9)])
            + Character.toString(operators[random.nextInt(2)])
            + Integer.toString(numbers[random.nextInt(9)])
            + Character.toString(operators[random.nextInt(2)])
            + Integer.toString(numbers[random.nextInt(9)])
            + Character.toString(operators[random.nextInt(2)])
            + Integer.toString(numbers[random.nextInt(9)]);

我现在想要的是计算它,但是用*运算符的优先级很难。

所有帮助将不胜感激:)

【问题讨论】:

    标签: java arrays operators


    【解决方案1】:

    我建议将您的数据解析成一棵树,其中每个节点都是一个操作,叶子是值,这将使您更容易实现操作顺序。将您的最高优先级操作设为最低优先级并自下而上执行。

    【讨论】:

    • 这基本上是问题的正确答案。 OP,基于字符串输入进行基于 PEMDAS 的计算(这是我假设你的意思)实际上并不是一项简单的任务。您必须在每一步都进行解析,基本上找到最里面的最高优先级运算符,然后每次从那里计算结果后向外移动。如果您可以按照该用户的建议重新组织它,这会有所帮助,但这仍然不是特别简单。
    • 真的很感谢你的好提示,我会在需要时使用它。我所做的是创建一个堆栈,并使用我计算的后缀值来计算答案:D
    【解决方案2】:

    不可能将字符串转换为运算符。 你需要一种方法来实现你想要的。 在this link 中是一个可以帮助你的例子。

    虽然它是在 C# 中,但它几乎是你想要的。

    【讨论】:

    • 是的,基本上你想说if (op == '*') { /* multiply int to the left against int to the right */ } else if...
    【解决方案3】:

    感谢所有方便的提示。但我找到了一个非常简单的方法来做到这一点。我有一个中缀到后缀计算器,对吗?所以我所做的是创建随机计算,将其放入一个字符串中。

    使用中缀>后缀翻译器使其成为后缀。然后将后缀计算的数字压入堆栈,将它们弹出到运算符处,如果运算符是+,则将它们加在一起。无需担心运算符的优先级,因为在后缀中这已经为您完成了! :D

    希望这会对人们有所帮助:) 如果需要,我可以将中缀发布到后缀计算器!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      相关资源
      最近更新 更多