Subdolo, ma l'ho scovato.
Nel metodo leggi() tu fai questo:
Quella riga in grassetto si mangia la prima riga. Quindi, tu inizializzi l'array "vet" con tante righe quante sono quelle del file... ma crei un oggetto in meno... ovvero, l'ultimo elemento dell'array non viene creato perchè in quel while fai un iterazione in meno.codice:... br=new BufferedReader(new FileReader (nomeFile)); br.readLine(); while ((line=br.readLine())!=null) { StringTokenizer st; ... }
Togli di mezzo quella riga e "tutto funziona".
L'ho messo tra virgolette perchè in realtà non vedrai stampare nulla visto che l'istruzione
Non fa nulla... il metodo toString() restituisce una stringa, ma tu la butti via... forse volevi mettere quell'istruzione in un System.out.println().codice:vet[j].toString();
Ci sono anche altri errori (ad esempio, non chiudi il file dopo averlo letto la seconda volta) e altre cose da sistemare (qui alcune):
1) Gestione della lettura di un file (vedi questo mio intervento in merito)
2) Tante istruzioni di assegnamento ridondanti
3) Leggi il file, ma del contenuto non ne fai nulla... gli oggetti Cifra li crei tutti con i valori (nulli) delle variabili di istanza "num" e "quantita" che non valorizzi da nessuna parte
Ciao.![]()