0

所以我有一个作业,它适用于堆栈和中缀到后缀计算。现在我有了 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)]);

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

所有帮助将不胜感激:)

4

3 回答 3

6

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

在此处输入链接描述

于 2013-10-19T20:06:22.747 回答
0

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

尽管它在 C# 中,但它几乎是您想要的。

于 2013-10-19T19:42:23.550 回答
-1

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

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

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

于 2013-10-20T14:44:33.640 回答