使计算器的求解部分,pemdas序列



我正在尝试制作一个GUI计算器。到目前为止,一切似乎都很好,但是我如何实现像内置Windows计算器这样的计算器,当您操作时,您会看到例如"100 + 2 + 9 * 4/8-3",因此每当您单击另一个+ -/*按钮时,它都会按顺序解决。佩姆达斯?我认为。我可以设法使计算器像这样运行,但它只能按顺序解决它,因为我只存储 2 个值,所以我想知道如何存储所有当前操作的值及其运算符(+-/*)

所以我想知道如何存储所有当前操作的值及其运算符(+-/*)

好吧,你可以尝试将每个操作存储在一个ArrayList中,并将每个操作放在一个名为Operation的类中,该类有3个变量number1number2operation,可以是enumString值。我更喜欢枚举方法,但我把它留给你。

因此,您可以拥有此类:

import java.util.ArrayList;
public class PemdasSample {
public static void main(String args[]) {
ArrayList <Operation> operations = new ArrayList<Operation>();
operations.add(new Operation(5, 5, "SUM"));
operations.add(new Operation(2, 2, "REST"));
operations.add(new Operation(3, 4, "MULTIPLY"));
for (Operation operation : operations) {
switch (operation.getOperation()) {
case "SUM":
System.out.println(operation.getNumber1() + operation.getNumber2());
break;
case "REST":
System.out.println(operation.getNumber1() - operation.getNumber2());
break;
case "MULTIPLY":
System.out.println(operation.getNumber1() * operation.getNumber2());
break;
default:
System.out.println("Operation not found");
break;
}
}
}
static class Operation {
int number1;
int number2;
String operation;
public Operation(int number1, int number2, String operation) {
this.number1 = number1;
this.number2 = number2;
this.operation = operation;
}
public int getNumber1() {
return number1;
}
public void setNumber1(int number1) {
this.number1 = number1;
}
public int getNumber2() {
return number2;
}
public void setNumber2(int number2) {
this.number2 = number2;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
}
}

产生此输出:

10
0
12

您可以采用逻辑(并将Operation类分离到它自己的文件中,而不是像我那样作为内部类,不是静态的等)并修改您的程序......

您没有提供任何代码,因此,如果此方法不适合您,请解释原因并提供有效的最小、完整和可验证的示例来演示您的问题。

免責聲明

由于 String 开关,此代码示例需要 Java 7 才能工作,有关详细信息,请参阅此答案。

我也没有将 PEMDAS 逻辑添加到程序中,因为 OP 没有提供任何代码,只是帮助了解如何存储操作。

最新更新