Metodo toString

di il
2 risposte

Metodo toString

Ciao a tutti, avrei bisogno d'aiuto con il metodo toString.
Il mio programma dovrebbe stampare una stringa in base alla moneta inserita. La stringa deve essere restituita da un metodo, richiamato dal main.
Il codice è questo:

public class Moneta {
    private double moneta; //variabile d'istanza che conterrà un valore in euro
    public void setMoneta(double moneta) { 
            if (moneta!=0.01&&moneta!=0.02&&moneta!=0.05&&moneta!=0.1&&moneta!=0.2&&moneta!=0.5&&moneta!=1&&moneta!=2){
            	System.out.println("Valore non valido"); //se i valore e' nullo, viene stampato questo messaggio
            }
            else
            {
            	this.moneta=moneta;  //se il valore non è nullo, viene salvato il valore della moneta
            }
    }
    public double getMoneta(){ //questo metodo restituisce la moneta
    	return moneta;
    }
public String toString(){
	if (moneta==0.01){
		return "Valore: 1 centesimo; Bordo: liscio; Disegno: Castel del Monte ad Andria"+moneta;
	}
	if (moneta==0.02){
		return "Valore: 2 centesimi; Bordo: liscio con un singolo solco centrale; Disegno: La Mole Antonelliana di Torino"+moneta; 
	}
	if (moneta==0.05){
		return "Valore: 5 centesimi; Bordo: liscio; Disegno: Il Colosseo a Roma"+moneta;
	}
	if (moneta==0.1){
		return "Valore: 10 centesimi; Bordo: smerlato (bordo rigato); Disegno: Particolare della Nascita di Venere di Sandro Botticelli"+moneta;
	}
	if (moneta==0.2){
		return "Valore: 20 centesimi; Bordo: liscio con sette rientranze (Fiore spagnolo); Disegno: Forme uniche della continuità nello spazio di Umberto Boccioni"+moneta;
	}
	if (moneta==0.5){
		return "Valore: 50 centesimi; Bordo: smerlato (bordo rigato); Disegno: Statua equestre di Marco Aurelio sul disegno michelangiolesco di Piazza del Campidoglio a Roma"+moneta; 
	}
	if (moneta==1){
		return "Valore: 1 euro; Bordo: sei segmenti alternati, tre lisci, tre finemente rigati; Disegno: L'Uomo Vitruviano di Leonardo da Vinci"+moneta;
	}
	if (moneta==2){
		return "Valore: 2 euro; Bordo: ripetizione di 2, capovolti e non; Disegno: Ritratto di Dante Alighieri ripreso dall'affresco La Disputa del Sacramento di Raffaello Sanzio"+moneta;
	}
}
}






public class TestMoneta { //classe contenente il main
    public static void main (String args[]) {
Moneta ogg1=new Moneta(); //creazione degli oggetti
Moneta ogg2=new Moneta();
Moneta ogg3=new Moneta();
ogg1.setMoneta(0.20); //vengono passati i valori
ogg2.setMoneta(0.01);
ogg3.setMoneta(1);
System.out.println("La moneta inserita e' €"+ogg1.getMoneta()); //vengono stampati i valori inseriti
System.out.println("Descrizione moneta: "+ogg1.toString());
System.out.println("La moneta inserita e' €"+ogg2.getMoneta());
System.out.println("Descrizione moneta: "+ogg2.toString());
System.out.println("La moneta inserita e' €"+ogg3.getMoneta());
System.out.println("Descrizione moneta: "+ogg3.toString());

    }
}
Io non so perché, ma da un errore e non stampa le stringhe.
Perdonate la mia ignoranza, ma ho cercato tanto e non sono riuscita a trovare niente.
Grazie in anticipo per l'aiuto

2 Risposte

  • Re: Metodo toString

    Non ho letto tutto il codice in dettaglio ma una cosa è certa: la tua classe Moneta NON compila nemmeno. Il compilatore deduce che è possibile che nessuno degli if nel toString sia "vero" e quindi in tal caso non c'è alcun return. Insomma non c'è un return di "default". Sei tu che devi definirlo!

    Per il resto ... dovrei analizzare meglio il codice. Chiarisciti innanzitutto quanto ho appena detto.

    E comunque una catena di if come quella denota una cosa: un design che fa un po' acqua. A quel punto .... se i tipi di monete sono fissi e noti a priori ... usa una enum piuttosto.
  • Re: Metodo toString

    Era proprio quello, grazie mille
Devi accedere o registrarti per scrivere nel forum
2 risposte