首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算程序pemdas序列的求解部分

计算程序pemdas序列的求解部分
EN

Stack Overflow用户
提问于 2017-05-12 15:15:38
回答 1查看 778关注 0票数 2

我在试着做一个GUI计算器。到目前为止,一切看起来都很好,但是我怎样才能实现一个像内置的windows计算器,当你操作的时候,你看到了前。"100+2+9*4/8-3“这样,每当你点击另一个+-/*按钮时,它就会按顺序被解决。Pemdas?我认为。我可以这样做计算器函数,但它只会按顺序来解决它,因为我只存储了2个值,所以我想知道如何存储所有当前操作的值及其运算符(+-/*)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-12 17:01:44

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

那么,您可以尝试将每个操作存储在ArrayList中,并将每个操作放在一个名为Operation的类中,该类包含3个变量number1number2operation,这些变量可以是enumString值。我更喜欢明暗的方法,但我把这个留给你。

所以,你可以上这个课:

代码语言:javascript
运行
复制
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;
        }
    }
}

它产生这个输出:

代码语言:javascript
运行
复制
10
0
12

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

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

免责声明

此代码示例需要Java 7才能工作,因为有字符串开关,有关更多信息,请参见this answer

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43941164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档