创建一个模拟非常简单的计算器的程序
所以我被要求实现一个表示二进制(有两个参数)算术表达式的抽象类
abstract class ArithmeticExpression {
double binary1;
double binary2;
public abstract void evaluate ();
public abstract void display ();
}
然后我创建了子类add,multiply,subtract和divide。在减去我有:
public class subtract extends ArithmeticExpression {
// private double result;
double binary1;
double binary2;
public subtract (double x, double y) {
this.binary1 = x;
this.binary2 = y;
}
public void evaluate () {
System.out.println("Expression: " + getsubX() + " - " + getsubY() + " = ");
// return result;
}
public void display () {
}
public double getsubX() {
}
public double getsubY() {
}
使用类我应该能够表示任意表达式,没有硬编码。
还说评估应该返回结果为double和display方法应该在字符串中输出表达式。我是在正确的轨道上吗?我在这里错过了什么?部分我不明白它是如何表达任何表达式的?
答案 0 :(得分:0)
如果您想评估以
形式插入的任何活动4 + 3 * ( 4 + 5)
您需要创建二叉树或堆栈并在中填充这些值和运算符。
我不太明白的是你所谓的二元表示为double。如果你想要二进制计算,你应该使用unsigned int或long(或任何其他类型,不是浮点数)
答案 1 :(得分:0)
使用抽象的ArithmeticExpression,这里是Subtract类的样子。 Java类以大写字母开头。
public class Subtract extends ArithmeticExpression {
double result;
public Subtract(double x, double y) {
this.binary1 = x;
this.binary2 = y;
}
@Override
public void evaluate() {
result = binary1 - binary2;
}
@Override
public void display() {
System.out.println("Expression: " + binary1 +
" - " + binary2 + " = " + result);
}
}
您不必重新声明binary1和binary2。它们在抽象的ArithmeticExpression类中实例化。
您必须为结果提供双倍。这应该在抽象的ArithmeticExpression类中完成。
evaluate()方法用于评估。
display()方法用于显示。
您不必在Subtract具体类中定义任何其他方法。