Entra

View Full Version : [Help java] ArrayList


Solido
24-01-2013, 15:05
Salve ragazzi mi sto imbattendo in un errore stupido...
devo scrivere un programmino che gestisca delle gare ognuna delle quali ha associata una classifica riempita dai punteggi di ogni giocatore...

solo che mi ritrovo , dentro la classe Classifica, questo:


public void addPunteggio(Punteggio p) { //INSERISCE I PUNTEGGI IN ORDINE
if(punteggi.size()==0){
punteggi.add(p);
}else{
int i=0;
while(i<punteggi.size() && punteggi.get(i).getPunteggio()>p.getPunteggio()){
i++;
}
punteggi.add(i, p);
}
}

dove getPunteggio è un metodo che restituisce e si trova all'interno della classe Punteggio!

solo che non capisco quest'istruzione qui :" punteggi.get(i).getPunteggio()>p.getPunteggio()"
cioè io avrei scritto solamente: punteggi.get(i)>p"
solo che chiaramente non torna ma non capisco il motivo per cui non torni.
cioè io con punteggi.get(i) ottengo il punteggio in posizione i e a questo di nuovo chiedo il punteggio?:confused:
idem con patate per quanto riguarda p.getpunteggio... dato che p è un punteggio perchè faccio p.getpunteggio?

e per ultimo chiedo anche la spiegazione di quest'istruzione:

public ArrayList<Punteggio> getPunteggi() {
return punteggi;
}

cioè getPunteggi() è una funzione che ritorna un arrayList di punteggi?


Grazie mille e scusate per le domande niubba:)

simo8
24-01-2013, 15:39
Sostanzialmente perché Punteggio è una classe non un numero ,sapere come è fatta potrebbe aiutare .

Comunque punteggi.get(i) ritorna una classe ti tipo Punteggio , è poi su quella che vai a chiamare la funzione getpunteggio() per poi confrontarla col valore ritornato dalla getpunteggio su p .

Solido
24-01-2013, 15:51
Sostanzialmente perché Punteggio è una classe non un numero ,sapere come è fatta potrebbe aiutare .

Comunque punteggi.get(i) ritorna una classe ti tipo Punteggio , è poi su quella che vai a chiamare la funzione getpunteggio() per poi confrontarla col valore ritornato dalla getpunteggio su p .

la classe punteggio è fatta così:


public class Punteggio {
private double punteggio;
private Tesserato tesserato;
private Classifica classifica;

public Punteggio(double punteggio, Tesserato tesserato, Classifica classifica) {
super();
this.punteggio = punteggio;
this.tesserato = tesserato;
this.classifica = classifica;
}

public Classifica getClassifica() {
return classifica;
}

public double getPunteggio() {
return punteggio;
}

public Tesserato getTesserato() {
return tesserato;
}


}


però non capisco come punteggi.get(i) restituisca una classe..
sul java tutorial si legge :
"get

public E get(int index)
Returns the element at the specified position in this list."

simo8
24-01-2013, 16:26
punteggi è un array di classi Punteggio , quindi quando chiami la get(i) l'elemento che vai a selezionare è di tipo Punteggio ovvero la tua classe .

Solido
24-01-2013, 16:51
punteggi è un array di classi Punteggio , quindi quando chiami la get(i) l'elemento che vai a selezionare è di tipo Punteggio ovvero la tua classe .

Si ok è vero Punteggio è una classe ma quello che non mi torna è questo:
se punteggi.get(i) restituisce una classe
allora che differenza c'è per esempio tra:
punteggi.get(1) e
punteggi.get(2) ???

cioè io con punteggi.get(1) seleziono il primo oggetto di tipo punteggio e scrivendo punteggi.get(1).getPunteggio(); prendo l'oggetto punteggio, ci richiamo il metodo il quale mi restituisce un numero?

simo8
24-01-2013, 18:00
allora la differenza fra punteggi.get(1) e punteggi.get(2) è ovviamente che cambiando l'indice della richiesta la prima chiamata resituisce l'oggeto Punteggi presente alla posizione con indice 1 nel vettore mentre l'altra quello con indice 2.

Per quando rigurda punteggi.get(1).getPunteggio() è come scrivere

classePunteggio = punteggi.get(1);
valore = classePunteggio.getPunteggio()

ovvero prima recuperi la classe Punteggio presente nella posizione uno dell'array , poi su quella classe chiami il metodo getPunteggio che resitiuisce il valore double punteggio membro della classe stessa .

Solido
24-01-2013, 20:16
scusa se sono duro di comprendonio ma l'oggetto punteggi in posizione uno non è un punteggio?:mc:
edit: riflettendoci penso di aver capito ( ma non sono sicuro) dimmi se sbaglio:
punteggi.get(i) mi restituisce l'oggetto i-esimo dell'array che è un oggetto di tipo Punteggio il quale ha vari attributi e metodi!
Facendo allora : punteggi.get(i).getPunteggio() chiamo il metodo getPunteggio definito nella classe Punteggio sull'istanza i-esima di tale oggetto!