计算Java中String变量的总和

时间:2013-10-19 19:25:55

标签: java arrays operators

所以我有一个可以使用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)]);

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

所有帮助将不胜感激:)

3 个答案:

答案 0 :(得分:6)

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

enter link description here

答案 1 :(得分:0)

将String转换为运算符是不可能的。 您需要一种方法来满足您的需求。 在this link中有一个可以帮助您的例子。

尽管它在C#中,它几乎就是你想要的。

答案 2 :(得分:-1)

感谢所有方便的提示家伙。但我找到了一种非常简单的方法。我有一个Infix到Postfix计算器吗?所以我做的是创建随机计算,将其放入一个字符串中。

使用Infix> postfix转换器将其设为postfix。然后在堆栈上推送后缀计算的数字,在运算符处弹出它们,如果运算符是+,则将它们加在一起。不关心运算符的优先级,因为在postfix中已经为你完成了! :d

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