PDA

Visualizza la versione completa : mi sono incasinato con java


matrics21
04-12-2003, 16:13
Vediamo di partire dal'inizio:

Ho 2 file java,uno sarebbe una classe che avrei dovuto istanziarte in tanti oggetti,tramite array,l'altro il programma principale.

nel prog principale ho fatto una cosa del genere,per istanziarmi nell'array la classe:
miaclasse miaistanza[]=new miaclasse[i];

All'interno della classe che ho scritto,dovrei creare un metodo che dovrebbe leggere determinati attributi per ogni istanza,mi spiego con un esempio:



codice
...
if(val==this[i].attrib)
{
...
...
}
...
codice


java non mi da per buona il frammento di codice this[i].attrib.
Come faccio allora?

Scusatemi per la speiegazione un pò imbrogliata

:ciauz:

ChReAn
04-12-2003, 16:49
Nella classe e' sufficiente scrivere

this.attrib

in quanto this fa gia' riferimento all'istanza corrente della classe.

xegallo
04-12-2003, 17:00
cerchiamo di usare ytitoli maggiormente esplicativi

matrics21
04-12-2003, 17:11
Originariamente inviato da ChReAn
Nella classe e' sufficiente scrivere

this.attrib

in quanto this fa gia' riferimento all'istanza corrente della classe.



ma questa istruzione devo scriverla all'interno della classe stessa,e non so a priori a quale delle istanze mi riferisco

ChReAn
04-12-2003, 17:19
Originariamente inviato da matrics21
ma questa istruzione devo scriverla all'interno della classe stessa,e non so a priori a quale delle istanze mi riferisco

Non mi sono spiegato: creando un array tu crei N istanze di una classe. In ciascuna istanza, chiamare this significa riferirsi all'istanza stessa.
Se invece e' dal codice chiamante che devi fare riferimento all'array, allora lo tratti come un normale array.

matrics21
04-12-2003, 17:24
Originariamente inviato da ChReAn
Non mi sono spiegato: creando un array tu crei N istanze di una classe. In ciascuna istanza, chiamare this significa riferirsi all'istanza stessa.
Se invece e' dal codice chiamante che devi fare riferimento all'array, allora lo tratti come un normale array.



quello che voglio fare io non è una normale operazione su un attributo.

Praticamente ho una variabile da confrontare su un determinato attributo per ogni istanza istanza.
Non devo fare una cosa tipo:

if(this.val==5)
...

Non so se sono riuscito a spiegarmi

ChReAn
04-12-2003, 17:26
Originariamente inviato da matrics21
quello che voglio fare io non è una normale operazione su un attributo.

Praticamente ho una variabile da confrontare su un determinato attributo per ogni istanza istanza.
Non devo fare una cosa tipo:

if(this.val==5)
...

Non so se sono riuscito a spiegarmi

Forse ho capito: devi confrontare dall'interno della classe degli attributi delle varie istanze componenti l'array.
E se ho capito bene, ti dico che secondo me quello che devi fare non deve essere fatto dall'interno della classe. Non solo: non puo' essere fatto dall'interno della classe, che, poverina, non puo' sapere di essere finita in un array di se' stessa.

Just my 2 cents.

matrics21
04-12-2003, 17:28
Originariamente inviato da ChReAn
Forse ho capito: devi confrontare dall'interno della classe degli attributi delle varie istanze componenti l'array.
E se ho capito bene, ti dico che secondo me quello che devi fare non deve essere fatto dall'interno della classe. Non solo: non puo' essere fatto dall'interno della classe, che, poverina, non puo' sapere di essere finita in un array di se' stessa.

Just my 2 cents.



era quello che temevo :cry:


dovrò inventarmi qualcosa di diverso allora :stordita:



graziw :ciauz:

ChReAn
04-12-2003, 17:34
Originariamente inviato da matrics21
era quello che temevo :cry:


dovrò inventarmi qualcosa di diverso allora :stordita:



graziw :ciauz:

Puoi creare una classe container che rappresenti un array.

Esempio:

A e' la classe che deve essere replicata.
B e' la classe contenente il main del programma.

Puoi creare una classe C che contiene un array di A, e definirne dei metodi che facciano i controlli che ti servono.

:ciauz:

matrics21
04-12-2003, 17:35
Originariamente inviato da ChReAn
Puoi creare una classe container che rappresenti un array.

Esempio:

A e' la classe che deve essere replicata.
B e' la classe contenente il main del programma.

Puoi creare una classe C che contiene un array di A, e definirne dei metodi che facciano i controlli che ti servono.

:ciauz:


buona idea


grazie per l'aiuto ;)


:ciauz:

Loading