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:
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;
	}
}
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?