所以我有一个可以使用Stack和Infix到Postfix计算的作业。现在我有中缀到Postfix计算但是..有一部分它说我必须计算4个随机数和随机算子。
所以我有一个数字1-9的数组,以及一个由+, - 和*组成的字符数组。
我可以进行随机计算并将其放在一个字符串对象中,但我似乎无法以正确的方式将计算存储在Integer变量中。有了运营商的正确优先级..我已经尝试了一些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)]);
我现在想要的是计算它,但是*运算符的优先级很难。
所有帮助将不胜感激:)
答案 0 :(得分:6)
我建议将数据解析到树中,其中每个节点都是一个操作,而叶子是值,这将使您更容易实现操作顺序。使您的最高优先级操作最低并执行自下而上。
答案 1 :(得分:0)
将String转换为运算符是不可能的。 您需要一种方法来满足您的需求。 在this link中有一个可以帮助您的例子。
尽管它在C#中,它几乎就是你想要的。
答案 2 :(得分:-1)
感谢所有方便的提示家伙。但我找到了一种非常简单的方法。我有一个Infix到Postfix计算器吗?所以我做的是创建随机计算,将其放入一个字符串中。
使用Infix> postfix转换器将其设为postfix。然后在堆栈上推送后缀计算的数字,在运算符处弹出它们,如果运算符是+,则将它们加在一起。不关心运算符的优先级,因为在postfix中已经为你完成了! :d
希望这会帮助人们:)如果需要,我可以将中缀发布到postfix计算器!