用java打印OO表达式树
我正在研究一个面向java对象的表达式树分配,我需要能够以前缀/中缀/后缀格式计算和打印表达式树。赋值描述了一个静态类型为“Exp”的类层次结构以及几个一元和二元子类 通过让一元类和二元类实现eval()方法(由根类型“Exp”指定),我已经解决了eval部分,但是需要打印表达式的帮助。我已经为此工作了好几天,但一事无成。我在网上找到的所有帮助都是关于包含运算符和值字段的二进制类(我的作业将它们作为两个不同的类)。请朝正确的方向踢我一脚——我将非常感激:-) 致以最良好的祝愿, 拉斯姆斯用java打印OO表达式树,java,recursion,tree,expression,Java,Recursion,Tree,Expression,我正在研究一个面向java对象的表达式树分配,我需要能够以前缀/中缀/后缀格式计算和打印表达式树。赋值描述了一个静态类型为“Exp”的类层次结构以及几个一元和二元子类 通过让一元类和二元类实现eval()方法(由根类型“Exp”指定),我已经解决了eval部分,但是需要打印表达式的帮助。我已经为此工作了好几天,但一事无成。我在网上找到的所有帮助都是关于包含运算符和值字段的二进制类(我的作业将它们作为两个不同的类)。请朝正确的方向踢我一脚——我将非常感激:-) 致以最良好的祝愿, 拉斯姆斯 以同样
以同样的方式处理它。重写
toString
,以便在二进制
的情况下,对左
和右
递归调用它,并返回值
节点的值。以下是如何执行中缀。前缀和后缀应该可以为你一旦你看到这一个是如何做到的
在Exp
界面中,添加:
String asInfix();
在二进制
类中,添加:
public final String asInfix() {
return "(" + left.asInfix() + " " + op + " " + right.asInfix() + ")";
}
public final String asInfix() {
return "" + value;
}
在值
类中,添加:
public final String asInfix() {
return "(" + left.asInfix() + " " + op + " " + right.asInfix() + ")";
}
public final String asInfix() {
return "" + value;
}
现在您可以执行
System.out.println(bN2.asInfix())
显示((10.0+5.0)+3.0)
亲爱的Xion,我用打印方法扩展了我的静态类型,并将其与重写的toString一起实现。当打印我在测试中创建的表达式时,递归似乎只进行了一个级别?太棒了(!):-)我可以问一下为什么要将方法声明为final吗?这只是一个习惯,因为我通常不进行任何子类化。可以省略它。