【发布时间】:2020-03-19 21:03:28
【问题描述】:
我正在尝试制作一个允许多种运算的计算器(例如 4+3-2+5)。我如何做到这一点的基本想法是使用这个循环:
for (int i = 0; i < nums.length; i++) {
switch (nums[i]) {
case add:
while (func.size() < i) {
func.add(0);
}
func.add(i, 1);
type = "+";
break;
//More cases for other operations
注意:nums.length 引用了一个数组,其中包含输入方程拆分如下:nums = equation.split("(?<=[-+*/%])|(?=[-+*/%])")
理想情况下,一旦我有了“类型”值,我就可以让我的程序通过这样做来计算方程:
for(int i = 1; i < nums.length; i++) {
ans = eq.get(0) type eq.get(func.indexOf(1)+i);
}
另一个小提示:eq 是一个数组列表,其中包含nums 的所有值。
我想要做的就是让type 变成数学运算,比如 +、- 等。我知道这段代码在我在这里展示的方式中被严重破坏了,但这只是我快速写信给的东西提供一个我想要完成的例子。我查看了与此类似的其他问题,其中解决方案是使用 Math 类并从中调用函数,但它在我的程序中不起作用。有人对实现这一目标的方法有想法吗?谢谢!
【问题讨论】:
-
如果您想处理运算符优先级,除了将其分解为各个部分之外,您还需要解析字符串。谷歌“方程解析”,你会发现一些很好的建议。
标签: java string function math calculator