我在试着做一个GUI计算器。到目前为止,一切看起来都很好,但是我怎样才能实现一个像内置的windows计算器,当你操作的时候,你看到了前。"100+2+9*4/8-3“这样,每当你点击另一个+-/*按钮时,它就会按顺序被解决。Pemdas?我认为。我可以这样做计算器函数,但它只会按顺序来解决它,因为我只存储了2个值,所以我想知道如何存储所有当前操作的值及其运算符(+-/*)。
发布于 2017-05-12 17:01:44
因此,我想知道如何存储所有当前操作及其运算符(+-/*)的值。
那么,您可以尝试将每个操作存储在ArrayList
中,并将每个操作放在一个名为Operation
的类中,该类包含3个变量number1
、number2
和operation
,这些变量可以是enum
或String
值。我更喜欢明暗的方法,但我把这个留给你。
所以,你可以上这个课:
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
类分离到它自己的文件中,而不是像我一样作为内部类,而不是静态的,等等)。修改你的程序..。
您没有提供任何代码,因此,如果这种方法不适合您,请解释原因,并提供一个有效的Minimal, Complete and Verifiable Example来演示您的问题。
免责声明
此代码示例需要Java 7才能工作,因为有字符串开关,有关更多信息,请参见this answer。
我也没有将PEMDAS逻辑添加到程序中,因为OP没有提供任何代码,只是帮助了解了如何存储操作。
https://stackoverflow.com/questions/43941164
复制相似问题