Non capisco dove sbaglio

di il
7 risposte

Non capisco dove sbaglio

Class ErrorMsg {

int OUTERR = 0;
int INERR = 1;
int DISKERR = 2;
int INDEXERR = 3;

String msgs[] = {
"Output Error",
"Input Error",
"Disk Full",
"Index Out-Of-Bounds"
};

String getErrorMsg(int i) {
if(i >=0 & i < msgs.length)
return msgs;
else
return "Invalid Error Code";
}
}

class EsercizioErr {
public static void main(String args[]) {

System.out.println(.getErrorMsg(.OUTERR));
System.out.println(.getErrorMsg(.DISKERR));
}
}

praticamente quando lo compilo mi da 6 errori che vi allego di seguito

Allegati:
30878_4a51cec014d2a9a79a84640fb40c717b.png
30878_4a51cec014d2a9a79a84640fb40c717b.png

7 Risposte

  • Re: Non capisco dove sbaglio

    toto_83 ha scritto:


    praticamente quando lo compilo mi da 6 errori che vi allego di seguito
    Il problema sta in quello che hai scritto in quei due println. La questione è semplice: tutto ciò che hai scritto in ErrorMsg ovvero le variabili (es. OUTERR ecc.. e anche l'array msgs) e il metodo getErrorMsg sono membri "di istanza". Significa che per poterli invocare DEVI avere una istanza (un oggetto) di ErrorMsg.
    Ora: nel main() hai creato una istanza di ErrorMsg? No, non l'hai fatto. Quindi non puoi fare nulla con ErrorMsg.

    Pertanto: inizia a creare una istanza di ErrorMsg.

    P.S. credo sia solo un errore di copia-incolla, all'inizio si vede Class (C maiuscola). Ovviamente va scritto class
  • Re: Non capisco dove sbaglio

    Sì quella C è un errore di copia incolla. Quindi se ho capito bene basta che io faccio tipo oggetto = new classe() prima dei println e dovrei risolvere?
  • Re: Non capisco dove sbaglio

    toto_83 ha scritto:


    basta che io faccio tipo oggetto = new classe() prima dei println e dovrei risolvere?
    Sì, usando ovviamente il nome di quella prima classe del sorgente, poi su quell'oggetto puoi referenziare es. OUTERR e invocare getErrorMsg.
  • Re: Non capisco dove sbaglio

    Praticamente io devo chiamare il metodo senza creare l'oggetto per questo l'avevo fatto in quel modo. Solo che mi perdo in qualche passaggio
  • Re: Non capisco dove sbaglio

    toto_83 ha scritto:


    Praticamente io devo chiamare il metodo senza creare l'oggetto
    Se non vuoi creare un oggetto ErrorMsg, l'unica alternativa è rendere quelle variabili e il metodo "di classe" ovvero static.
    Ma devi poi invocarli sul nome della classe es ErrorMsg.OUTERR
  • Re: Non capisco dove sbaglio

    Quindi dovrei fare static int outer e così via , poi dovrei fare static string getErrorMsg e nel println che mi perdo poi
  • Re: Non capisco dove sbaglio

    toto_83 ha scritto:


    Quindi dovrei fare static int outer e così via , poi dovrei fare static string getErrorMsg

    toto_83 ha scritto:


    e nel println che mi perdo poi
    NomeClasse.metodoStatico()

    NomeClasse.variabileStatica

    Il NomeClasse serve per qualificare quando il membro da usare è in un'altra classe.
    Se OUTERR ecc, msgs e getErrorMsg fossero in EsercizioErr, non ci sarebbe bisogno di qualificarli.
Devi accedere o registrarti per scrivere nel forum
7 risposte