实施简单的计算器

时间:2013-11-13 18:32:07

标签: java class abstract

创建一个模拟非常简单的计算器的程序

所以我被要求实现一个表示二进制(有两个参数)算术表达式的抽象类

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方法应该在字符串中输出表达式。我是在正确的轨道上吗?我在这里错过了什么?部分我不明白它是如何表达任何表达式的?

2 个答案:

答案 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具体类中定义任何其他方法。