制作计算器的解决部分,pemdas序列

时间:2017-05-12 15:15:38

标签: java swing

我正在尝试制作一个GUI计算器。到目前为止,一切似乎都很好,但我怎样才能实现像内置的Windows计算器那样,当你操作时,你会看到前者。 “100 + 2 + 9 * 4 / 8-3”,这样每当你点击另一个+ - / *按钮时,它将按顺序解决。 Pemdas?我认为。我可以设法让计算器这样的功能,但它只会按顺序解决它,因为我只存储2个值,所以我想知道如何存储所有当前操作及其运算符的值(+ - / *)< / p>

1 个答案:

答案 0 :(得分:1)

  

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

好吧,您可以尝试将每个操作存储在ArrayList中,并将每个操作放在名为Operation的类中,该类包含3个变量number1number2和{{ 1}}可以是operationenum值。我更喜欢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 类分离到自己的文件中,而不是像我那样将内部类分开,而不是静态等等)并修改程序...

您没有提供任何代码,因此,如果此方法不适合您,请解释原因并提供有效的Minimal, Complete and Verifiable Example来证明您的问题。

声明

此代码示例要求Java 7因字符串开关而起作用,有关详细信息,请参阅this answer

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