Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    [Java]String toString()

    ciao a tutti,
    ho un problema con un metodo String che deve ritorna una stringa, a seconda del valore contenuto nella variabile di istanza;

    l'errore che mi viene visualizzato è del tipo "Missing retourn Statement"

    so che è banale, ma riporto per comodità parte del codice.Vi prego di volermi aiutare.grazie

    public String toString(){
    switch (s)
    {
    case 20:
    video.println ("cuori");
    break;

    case 21:
    video.println ("denari");
    break;

    case 22:
    video.println ("fiori");
    break;

    case 23:
    video.println ("picche");
    break;
    }
    }


    se invece scrivo : public String toString ;{

    non mi da errore,ma non è sbagliato in quanto poi non è un metodo utilizzabile poichè mancano le () ?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Beh... se tu dichiari che un metodo ritorna un parametro di tipo String, devi farglielo ritornare... una cosa sono i metodi void (che è ciò che intendi fare tu), un'altra sono i metodi con ritorno del parametro.
    I primi sono l'equivalente delle procedure nei linguaggi imperativi, mentre i secondi sono l'equivalente delle funzioni.

    Ora devi solo decidere quale dei due tipi di metodo ti interessa:
    codice:
    public void toString()
    
    oppure
    
    public String toString()
    L'ultima cosa che hai scritto, a parte un errore di sintassi, dopo il punto e virgola, rappresenta una variabile (o meglio un oggetto) di tipo String e non un metodo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    da errore perchè il metodo non ritorna una stringa con return.

    Il secondo non da errore xhè il compilatore crede che tu stia creando un normale oggetto String chiamato toString.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  4. #4
    io ho bisogno di un metodo che mi ritorni una Stringa (tipo "fiori" o "denari" a seconda dei valori contenuti nelle vaiabili private int CUORI=20;
    private int DENARI=21;
    private int FIORI=22;
    private int PICCHE=23

    xcio ho sviluppato la classe cosi..:

    import prog.io.*;
    class Seme {
    private /*static final*/ int CUORI=20;
    private /*static final*/ int DENARI=21;
    private /*static final*/ int FIORI=22;
    private /*static final*/ int PICCHE=23;

    private int s;
    ConsoleOutputManager video = new ConsoleOutputManager();
    ConsoleInputManager tastiera = new ConsoleInputManager();

    public Seme (int x)throws InvalidCardException{
    switch (x)
    {
    case 20:

    case 21:

    case 22:

    case 23:


    s=x;
    break;
    default:
    throw new InvalidCardException ("Il numero non corrisponde ad alcun seme.");
    }
    }


    public void set (int x)throws InvalidCardException {
    switch (x)
    {
    case 20:

    case 21:

    case 22:

    case 23:


    s=x;
    break;
    default:
    throw new InvalidCardException( "Il numero non corrisponde ad alcun seme.");
    }
    }

    public int get (){
    return s;
    }


    public String toString(){
    switch (s)
    {
    case 20:
    video.println ("cuori");
    break;

    case 21:
    video.println ("denari");
    break;

    case 22:
    video.println ("fiori");
    break;

    case 23:
    video.println ("picche");
    break;
    }
    }

    }

    ma mi da sempre errore
    C:\Programmi\MyProjects\Seme.java:61: missing return statement
    public String toString(){
    ^
    1 error

    Process completed.

    e nn capisco perchè?!

    vi ringrazio molto per la disponibilità , siete veramente gentilissimi e spero di poter contare ancora su di voi..

  5. #5
    se nel toString faccio
    return s;

    mi da errore ugualmente, devo importare forse qualche package?

  6. #6
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    il tuo metodo toString non ha un

    return Oggetto_Stringa

    Ma un video.println

    Quindi o metti void o invece di video.println metti return fiori o il seme in questione.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  7. #7
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Originariamente inviato da savethebrave
    se nel toString faccio
    return s;

    mi da errore ugualmente, devo importare forse qualche package?
    ti da errore xhè s è un tipo base di tipo intero, non un oggetto String.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    sbagliato a postare...
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Tu continui a confondere il valore di ritorno di una funzione con ciò che quella funzione stampa a video.

    Tu hai dichiarato la funzione toString() in modo tale da ritornare un valore, non importa a nessuno che lo stampi anche a video!

    In quel metodo manca l'istruzione return che permette a una funzione di restituire un valore... a chi lo restituisce? Lo restituisce alla procedura chiamante, la quale lo salverà in una variabile o lo utilizzerà in qualche modo.

    Secondo me tu non vuoi restituire un valore, ma vuoi solamente stamparlo in output. Per far questo devi dichiarare il metodo toString() come void e non come tipo String.
    codice:
    public void toString() {
       ...
    }
    Dichiarandolo come l'hai dichiarato tu servirebbe per fornire un risultato a qualche altra funzione che lo richiami, ad esempio questo:
    codice:
    public String ritorna() {
       return "Ciao mondo!";
    }
    
    ...
    
    video.println( ritorna() );
    Io ti consiglio di studiarti bene le basi di questo linguaggio, e anche darti un'occhiata alla programmazione imperativa, perchè sembra che tu abbia delle grosse lacune... (è solo un consiglio, non prenderla a male)


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    vi prego un ultimo aiuto..(x stasera.. ) sono disperato e nn riesco + a pensare...

    i metodi toString delle classi Seme e Valore li ho scritti cosi e non mi da errore:

    public static String toString(String o){
    switch (s)
    {
    case 20:
    //return "CUORI";
    o = "cuori";
    break;
    case 21:
    //return "DENARI";
    o = "denari";
    break;
    case 22:
    //return "FIORI";
    o = "fiori";
    break;
    case 23:
    //return "PICCHE";
    o = "picche";
    break;

    }return o;

    }

    -----------------

    public static String toString(String o) {
    switch (v)
    {
    case 1:
    //v= ASSO;
    //video.println ("asso");
    o= "asso";
    break;
    case 2:
    //v= DUE;
    //video.println ("due");
    o= "due";
    break;
    case 3:
    //v= TRE;
    //video.println ("tre");
    o= "tre";
    break;
    case 4:
    //v= QUATTRO;
    //video.println ("quattro");
    o= "quattro";
    break;
    case 5:
    //v= CINQUE;
    //video.println ("cinque");
    o= "cinque";
    break;
    case 6:
    //v= SEI;
    //video.println ("sei");
    o= "sei";
    break;
    case 7:
    //v= SETTE;
    //video.println ("sette");
    o= "sette";
    break;
    case 8:
    //v= OTTO;
    //video.println ("otto");
    o= "otto";
    break;
    case 9:
    //v= NOVE;
    //video.println ("nove");
    o= "nove";
    break;
    case 10:
    //v= DIECI;
    //video.println ("dieci");
    o= "dieci";
    break;
    case 11:
    //v= FANTE;
    //video.println ("fante");
    o= "fante";
    break;
    case 12:
    //v= DONNA;
    //video.println ("donne");
    o= "donna";
    break;
    case 13:
    //v= RE;
    //video.println ("re");
    o= "re";
    break;


    }return o;

    }


    ma nella classe Carta ,in cui utizzo i metodi sopra descritti, mi da errore tipo:

    toString() in Carta cannot override toString() in java.lang.Object; toString() and toString() are static
    public static String toString() {
    ^
    1 error


    nn capisco + dove sbaglio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.