创建一个程序来模拟一个非常简单的计算器
因此,我被要求实现一个表示二进制(有2个参数)算术表达式的抽象类。
abstract class ArithmeticExpression {
double binary1;
double binary2;
public abstract void evaluate ();
public abstract void display ();
}
因此,我创建了子类--加、乘、减和除。在减法方面:
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() {
}
使用这些类,我应该能够表示任意的表达式,而不需要硬编码。
也有人说,计算应该返回结果为双,显示方法应该打印出来的表达式在字符串。我在正确的轨道上吗?我在这里错过了什么?这部分我不明白它怎么能代表任何一种表达?
发布于 2013-11-13 10:52:37
使用抽象的ArithmeticExpression,下面是减法类的样子。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类中完成。
评估()方法用于评估。
display()方法用于显示。
您不必在减具体类中定义任何其他方法。
发布于 2013-11-13 10:51:17
如果您想要计算任何插入形式为
4 + 3 * ( 4 + 5)
您需要创建二叉树或堆栈,并在其中填充这些值和运算符。
我不太明白的是你所谓的二进制表示为双。如果您希望具有二进制calc,则应使用无符号int或long (或任何其他类型,即非浮点数)。
https://stackoverflow.com/questions/19961629
复制