자바 객체 지향 트리 할당에서 작업 중이며 프리픽스/삽입/접미어 형식의 표현 트리를 평가하고 인쇄 할 수 있어야합니다. 할당은 정적 유형이 "Exp"인 클래스 계층 구조와 몇 개의 단항 및 2 진 서브 클래스를 설명합니다.자바에서 OO 표현 트리를 인쇄
단항 및 이진 클래스가 eval() 메서드 ("Exp"루트 유형으로 지정)를 구현하도록하여 표현을 인쇄하는 데 도움이 필요하므로 eval 부분을 해결했습니다. 나는 며칠 동안 이걸로 일했고 아무데도 못 입었습니다. 내가 온라인에서 찾은 모든 도움은 연산자와 값 필드가있는 이진 클래스에 관한 것입니다. (내 과제에는 두 개의 다른 클래스가 있습니다.) 나에게 올바른 방향으로 킥을주십시오 - 나는
최고의 소원 :-) 가장 감사 할 것, 라스무스
public interface Exp { double value(); }
public class Value implements Exp {
private double value;
public Value(double val) { this.value = val; }
public double value() { return this.value; }
}
public class Binary implements Exp {
private char op; private Exp right; private Exp left;
public Binary(char op, Exp left, Exp right) {
this.op = op; this.left = left; this.right = right;
}
}
public double value() { // sum up using recursion
switch(this.op) {
case '+': return this.left.value()+this.right.value();
case '-': return this.left.value()-this.right.value();
case '*': return this.left.value()*this.right.value();
case '/': return this.left.value()/this.right.value();
default: return Double.NaN;
}
}
}
public class Main { //calculating total ok - needs printing!
public static void Main(String[] args) {
Exp valLeft = new Value(10);
Exp valRight = new Value(5);
Exp bN1 = new Binary('+', valLeft, valRight);
Exp bN2 = new Binary('+', bN1, new Value(3));
System.out.println(bN2.value());
}
}
환상적인 (!) :-) 나는 왜 당신이 최종 방법을 선언 할 수 있겠는가? – Rasmus
.. 서브 클래스에 의한 오버라이드를 피하기 위해서 ;-) – Rasmus
서브 클래 싱을하지 않기 때문에 습관 일뿐입니다. 그것을 생략하십시오. – Olathe