ciao sono un pò in difficoltà con la classe LibrettoEsami che descrive un libretto universitario.
Dopo tante difficoltà sono riuscita ad implementarla(forse):
Fin qui è compilato tutto correttamente...adesso arriva il dunque.L0esercizio mi chiede poi di scrivere un programma TestLibrettoEsami che legge da standard input unacodice: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; } }
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:
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?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()); } } }
Scusate per la lunghezza dell messaggio...ma in java sono proprio senza speranza![]()
![]()



Rispondi quotando