我正在尝试为学校项目构建一个计算器。
我希望它具有一个数学字段(R,Q,Z,N)字段,以便处理不同类型的数字。
(用户必须在输入数字之前选择字段)
我创建了一个mathField枚举

public enum mathField {
    R, Q;
}


并创建Calculator的构造函数,然后获取mathField类型。
但是当我尝试使用以下方法创建一个新的Calculator实例时:

Calculator calc = new Calculator(Q);


我收到消息


  “ Q无法解析为变量”。


我究竟做错了什么?

最佳答案

如果您的Q计算器与R计算器的工作方式不同,则应考虑使Calculator成为抽象类或接口,并从中派生不同类型的计算器。

enum Mathfield { R, Q };

abstract class Calculator {
    static Calculator create(Mathfield type) {
        switch (type) {
            case R:
                return new RCalculator();
            case Q:
                return new QCalculator();
            default:
                throw new IllegalArgumentException("Type " + type + " not supported.");
        }
    }

    abstract String display(double number);
    // some more methods here... some abstract, some with a definition common to all types
    // of calculator.
}

class RCalculator extends Calculator {
    String display(double number) {
        // display it normally
    }
}

class QCalculator extends Calculator {
    String display(double number) {
        // display it in hex. Or backwards. Or whatever strange behaviour QCalculator has
    }
}

class Main {
    public static void main(String[] args) {
        Calculator calc = Calculator.create(Mathfield.R);
        ....
    }
}

关于java - mathfield作为枚举java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49854941/

10-13 08:58