Olá Mauricio primeiramente obrigado pelas aulas tu sabe D+ tu só pode ser encarnação de algum Deus kkkk, eu queria ver como eu poderia adicionar na árvore a classe RAIZ QUADRADA que eu criei para poder imprimir junto com toda a STRING da conta.
Eu tentei assim mais não deu certo segue minha classe RAIZQUADRADA, mais não estou enxergando como ela entraria na árvore se puder me ajudar. OBRIGADO !!
// CLASSE RAIZQUADRADA
package br.com.cap4;
public class RaizQuadrada implements Expressao {
private Expressao expressao;
private int numero;
public RaizQuadrada(Expressao e) {
this.expressao = e;
}
@Override
public int avalia() {
this.numero = (int) Math.sqrt(expressao.avalia());
return numero;
}
@Override
public void aceita(Impressora impressora) {
impressora.visitaRaizQuadrada(this);
}
@Override
public String toString() {
return "\\u221A "+numero;
}
}
CLASSE IMPRESSORA
package br.com.cap4;
public class Impressora {
public void visitaSoma(Soma soma) {
System.out.print("(");
soma.getEsquerda().aceita(this);
System.out.print(" + ");
soma.getDireita().aceita(this);
System.out.print(")");
}
public void visitaSubtracao(Subtracao subtracao) {
System.out.print("(");
subtracao.getEsquerda().aceita(this);
System.out.print(" - ");
subtracao.getDireita().aceita(this);
System.out.print(")");
}
public void visitaMultiplicacao(Multiplicacao multiplicacao) {
System.out.print("(");
multiplicacao.getEsquerda().aceita(this);
System.out.print(" * ");
multiplicacao.getDireita().aceita(this);
System.out.print(")");
}
public void visitaDivisao(Divisao divisao) {
System.out.print("(");
divisao.getEsquerda().aceita(this);
System.out.print(" / ");
divisao.getDireita().aceita(this);
System.out.print(")");
}
public void visitaNumero(Numero numero) {
System.out.print(numero.getNumero());
}
public void visitaRaizQuadrada(RaizQuadrada raizQuadrada) {
System.out.println(raizQuadrada);
}
}