Provo a scrivere tutto su file txtcodice:public class ElencoStudenti extends HashMap<String, Studente> { String matricola; // metodo per l'inserimento degli studenti public void addStudente(String cognome, String nome, Object appello, Object voto) { Studente st = new Studente(cognome, nome, appello, voto); this.put(matricola, st); } // metodo per la selezione di un singolo studente public Studente getStudente(int i){ return this.get(i); } }
E questo è poi il maincodice:public void scrivi(ElencoStudenti e, int i) throws IOException{ FileWriter f = new FileWriter(doc, true); f.write((String)e.matricola+" - "+e.getStudente(i).getCognome()+" - "+e.getStudente(i).getNome()+" - "+e.getStudente(i).getAppello()+" - "+e.getStudente(i).getVoto()+"\r\n"); f.close(); }
codice:private void bottoneAggiungiActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: e.matricola = matricola.getText(); e.addStudente(cognome.getText(), nome.getText(), appello.getSelectedItem(), voto.getSelectedItem()); if (d.exists() != true) { d.newDoc(); try { d.scrivi(e, i); } catch (IOException ex) { Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex); } } else { try { d.scrivi(e, i); } catch (IOException ex) { Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex); } } i++; matricola.setText(""); cognome.setText(""); nome.setText(""); appello.setSelectedIndex(0); voto.setSelectedIndex(0); }
Provo ad avviarlo e ricevo questo errore:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at studenti.Documento.scrivi(Documento.java:41)
at studenti.mainFrame.bottoneAggiungiActionPerformed( mainFrame.java:323)
Credo sia un problema dell'hashmap perché avevo scritto tutto con arraylist e funzionava.. Poi ho cambiato idea credendo fosse più corretto utilizzare l'hashmap e avere così la matricola come chiave

Rispondi quotando