Lettura dati input, metodo String toString()

di il
3 risposte

Lettura dati input, metodo String toString()

Salve a tutti.
Apro questo topic per richiedere chiarimenti riguardo il metodo String toString() che dovrebbe di norma fornirmi una descrizione, in modo testuale, dello stato di un oggetto.
Sò che tipicamente, di un oggetto si vogliono stampare i valori delle variabili d'istanza, ed eventualmente una intestazione.. ma in che modo farlo?
Faccio questa domanda in merito alla richiesta di un esercizio che prevede, attraverso l'artificio di quest'ultimo metodo, la stampa di parametri.
il compilatore mi segnala che non posso stampare queste variabili, essendo private, nel metodo di appartenenza.. è solo quello il problema? non credo.
Posto ora qui sotto l'implementazione parziale (relativa ad un solo parametro); spero possiate essermi di aiuto.
Grazie molte
public class Main {

   public static void main(String[] args) {
     System.out.println("Descrizione del triangolo");
}
   public String toString() {
	   	 TriangoloEquilatero.calcolaax();
	 return "Punto 1: x= " +TriangoloEquilatero.ax;
}
}


/*rappresentazione di un triangolo equilatero su un piano bidimensionale*/
import fiji.io.*;
public class TriangoloEquilatero {
//variabili d'istanza
  private double x1, y1, x2, y2, x3, y3;
//costruttore triangolo equilatero

/* Crea un nuovo Triangolo con vertici le cui
* coordinate x1, y1, x2, y2, x3, y3
* sono rispettivamente ax, ay, bx, by, cx, cy. */
  public TriangoloEquilatero (double ax, double ay, double bx, double by, double cx, double cy)  {
    // pre: ax>0, ay>0, bx>0, by>0, cx>0, cy>0
    this.x1 = ax;
    this.y1 = ay;
    this.x2 = bx;
    this.y2 = by;
    this.x3 = cx;
    this.y3 = cy;
}
    //lettura ax
    public int calcolaax() {
		int ax;
		System.out.println("ax è: ");
		ax=Lettore.in.leggiInt();
		return ax;
	}

3 Risposte

  • Re: Lettura dati input, metodo String toString()

    Ciao, senza addentrarmi troppo nel tuo codice ti posto un esempio di utilizzo del metodo toString()
    
    public class TriangoloEquilatero {
    	private int lato;
    	
    	public TriangoloEquilatero() {
    		super();
    	}
    	
    	public TriangoloEquilatero(int lato) {
    		super();
    		this.lato = lato;
    	}
    
    	public int getLato() {
    		return lato;
    	}
    
    	public void setLato(int lato) {
    		this.lato = lato;
    	}
    
    	@Override
    	public String toString() {
    		String s = "Ciao, sono un triangolo equilatero e il mio lato e' "+this.getLato()+".";
    		return s;
    	}
    	
    	
    	public static void main(String[] args) {
    		TriangoloEquilatero t = new TriangoloEquilatero(4);
    		System.out.println(t);
    	}	
    }
    
  • Re: Lettura dati input, metodo String toString()

    Ciao Minomic, ti ringrazio molto per la risposta anche se non èra quello che stavo cercando esattamente;
    Suppongo di dover svolgere questo esercizio a prescindere dai concetti di @override ed ereditarietà delle proprietà di un metodo, quali non mi sono ancora stati introdotti. Esiste un modo alternativo?
    public class TriangoloEquilatero {
       private int lato;
       
       public TriangoloEquilatero() {
          super();
       }
       
       public TriangoloEquilatero(int lato) {
          super();
          this.lato = lato;
       }
    
       public int getLato() {
          return lato;
       }
    
       public void setLato(int lato) {
          this.lato = lato;
       }
    
       @Override
       public String toString() {
          String s = "Ciao, sono un triangolo equilatero e il mio lato e' "+this.getLato()+".";
          return s;
       }
       
       
       public static void main(String[] args) {
          TriangoloEquilatero t = new TriangoloEquilatero(4);
          System.out.println(t);
       }   
    }
    Leggendo il tuo codice, sempre che non erri, mi sembra che non vengano coinvolte operazioni di lettura dati di input che richiamano una variabile d'istanza da un altro metodo. Es:
     public String toString() {
    return " +<nomemetodo.variabile>"; 
    Quindi mi chiedo: Hai deciso di istanziare il metodo String toString() all'interno di TriangoloEquilatero solo per comodità o per necessità progettuale?
  • Re: Lettura dati input, metodo String toString()

    Io purtroppo temo di non aver capito cosa esattamente tu voglia fare. Devi accedere alle variabili private di un oggetto? In questo caso puoi utilizzare i tipici metodi getter.
Devi accedere o registrarti per scrivere nel forum
3 risposte