我正在尝试为学校项目构建一个计算器。
我希望它具有一个数学字段(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/