Innanzitutto vorrei fare un appunto: secondo la mia (modestissima!) opinione non è una buona cosa lanciare una eccezione se non c'è un sotto-ramo. Sarebbe preferibile ritornare semplicemente 'null' se il sotto-ramo non c'è.Originariamente inviato da Poker1
ho fatto un esame in cui ho una classe astratta con un metodo concreto toString(). Ho provato in tutti i modi a realizzarlo ma non sono venuto a niente. toString appunto ritorna una stringa e questo va fatto ricorsivo e non capisco come poterlo fare.
A parte questo posso farti un esempio di come si possa gestire il toString. Ti posto il codice per un semplice albero binario in cui ogni nodo ha una informazione di tipo String.
L'albero che ho costruito nel main è fatto così:codice:public class Prova { public static void main (String[] args) { BiTree a, b, c, d; d = new BiTree ("ciao"); b = new BiTree ("prova", d, null); c = new BiTree ("binario"); a = new BiTree ("albero", b, c); System.out.println (a); } } class BiTree { private String text; private BiTree left; private BiTree right; public BiTree (String text) { this.text = text; } public BiTree (String text, BiTree left, BiTree right) { this.text = text; this.left = left; this.right = right; } public String getText () { return text; } public BiTree getLeft () { return left; } public BiTree getRight () { return right; } public String toString () { String s = ""; if (getLeft () != null) s += getLeft (); s += "[" + getText () + "] "; if (getRight () != null) s += getRight (); return s; } }
E se lanci il programma stampa:codice:albero /\ / \ / \ prova binario /\ /\ / / ciao /\
[ciao] [prova] [albero] [binario]

Rispondi quotando