ciao sono un pò in difficoltà con la classe LibrettoEsami che descrive un libretto universitario.
Dopo tante difficoltà sono riuscita ad implementarla(forse):
codice:
import java.util.*;
class LibrettoEsami{
    private  ArrayList <Esame> esami;
    final int numesami=40;
    private int cfu;
    private double media;
    public LibrettoEsami(){
        esami=new ArrayList <Esame>();    
        cfu=0;
        media=0.0;
}
public boolean addEsame(Esame e){
        if(esami.size()<numesami&&esami.contains(e)){
            System.out.println("esame già registrato");
            return false;
    }else
    esami.add(e);
    return true;
}

public int totCFU(){
    for(Esame e:esami)
        this.cfu+=e.getCFU();
        return cfu;    
}
//media=sommaPesataVoti / sommaCrediti;
public double mediaVoti(){
    double sommavoti=0.0;
    double sommaCrediti=0.0;
    
        for(Esame e:esami){
            sommavoti+=(e.getVoto()*e.getCFU());
            sommaCrediti+=e.getCFU();
        }
            media=sommavoti/sommaCrediti;
            
            return media;
}
public String toString(){
    String s=" ";
    for(Esame e:esami){
        if(e.getVoto()!=0)
            s=e.getNome()+" "+e.getCFU()+" CFU "+e.getVoto();
    
    else
    s=e.getNome()+" "+e.getCFU()+" CFU : esame non sostenuto";
}
return s;
}
}
Fin qui è compilato tutto correttamente...adesso arriva il dunque.L0esercizio mi chiede poi di scrivere un programma TestLibrettoEsami che legge da standard input una
sequenza di linee della forma:

esame#cfu#v (con input da un file.txt)

Supponiamo che le linee sullo standard input siano

programmazione#12#26
basi di dati#12#25
inglese#3
architettura degli elaboratori I#6#24
programmazione#12#28

Il programma deve stampare:

registro PROGRAMMAZIONE 12 CFU 26
registro BASI DI DATI 12 CFU 25
INGLESE 3 CFU : esame non sostenuto
registro ARCHITETTURA DEGLI ELABORATORI I 6 CFU 24
PROGRAMMAZIONE 12 CFU: esame gia` registrato

CFU: 30 - Media: 25.2

Anche qui dopo tante peripezie sono riuescita a scrivere a modo mio la seguente classe:
codice:
import java.util.*;
class TestLibrettoEsami{
public static void main(String[] args){
Scanner sc = new Scanner(System.in).useDelimiter("[#\n]");
LibrettoEsami l=new LibrettoEsami();
while(sc.hasNext()){
String materia=sc.next();

System.out.println(l.toString());
System.out.println(l.totCFU());
System.out.println(l.mediaVoti());
}
}
}
Il problema è che in esecuzione il programma TestLibrettoEsami mi stampa 0Nan,cioè non mi riconosce nessuna istruzione da terminale.Perchè?Ho sbagliato qualcosa nella classe LibrettoEsami?
Scusate per la lunghezza dell messaggio...ma in java sono proprio senza speranza