Esercizio:
Implementare una classe pubblica LibrettoEsami che descrive un libretto universitario.Nel nostro caso un libretto e` definito da un insieme di esami sostenuti, quindi con voto diverso da 0, dal totale di CFU accumulati e dalla media dei voti degli esami (media pesata sui CFU, vedi sopra).
Implementare una classe LibrettoEsami che permetta di:
* aggiungere un nuovo esame sostenuto da uno studente e restituisce true se
* l'esame
e` stato effettivamente aggiunto
public bolean addEsame(Esame esame)
Nota: il metodo deve permettere di aggiungere un esame solo se nel
libretto
non e` gia` stato registrato un esame con lo stesso nome e se c'e` il
voto
(cioe` il voto e` diverso da zero)
* restituire il numero totale di CFU degli esami sostenuti e la media pesata
* dei voti,
public int getTotCFU()
public double getMedia()
Il costruttore deve costruire la struttura (array o ArrayList) per registrare
gli esami, e inizializzare media e totCFU a zero.
public LibrettoEsami()
Le variabili di istanza che ci occorrono sono:
- listaEsami
- totCFU
- media (uguale a 0 se non sono stati sostenuti esami).
----------------------------------------------------------------------------------------
Questo è quello che ho prodotto:
il problema è che se faccio il test anche se metto 2 esami nella lista il metodo addEsame che mi dovrebbe controllare se ci sono esami uguali non mi restituisce nulla o meglio me li stampa tutti anche i doppioni. E' sbagliato il metodo che ho scritto?codice:public class LibrettoEsami { ArrayList<Esame> listaEsami = new ArrayList<Esame>(); int totCFU; double media; public LibrettoEsami(){ this.totCFU = 0; this.media = 0; } public boolean addEsame(Esame e) { if(listaEsami.contains(e)) return false; else{ return true; } } public int getTotCFU(){ for(Esame e : listaEsami) this.totCFU += e.getCFU(); return totCFU; } public double getMedia(){ double sommaPesata = 0, totCFU = 0; for(Esame e : listaEsami){ sommaPesata += (e.getCFU() * e.getVoto()); totCFU += e.getCFU(); } return this.media = sommaPesata / totCFU; } public String stampa(){ String s = ""; for(Esame e : listaEsami){ if(e.getVoto() != 0) s = e.getNome() + " " + e.getCFU() + " CFU " + e.getVoto(); else s = e.getNome() + " " + e.getCFU() + " CFU : esame non sostenuto"; } return s; } }

Rispondi quotando