Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104

    [JAVA] Problema utilizzo hashmap

    codice:
    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);
        }
    }
    Provo a scrivere tutto su file txt
    codice:
        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();
        }
    E questo è poi il main
    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

  2. #2
    E questo è poi il main

    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);
        }
    Questo non mi pare proprio il main...più che altro sono le azioni che vengono fatte quando clicchi sul bottone.

    Hai inizializzato ElencoSutudenti nei passi precedenti?
    Perché l'errore è qui
    codice:
    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();
        }
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Intendevo dire che è il bottone all'interno del main -.-

    Cmq ho solo creato l'elenco nel main

    codice:
    public class mainFrame extends javax.swing.JFrame {
        ElencoStudenti e = new ElencoStudenti();

  4. #4
    così col codice a pezzi è un po complicato capire l'errore...
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Sei sicuro di cosa viene restituito da e.getStudente(i)?
    Cosa fa quel metodo? Ti restituisce l'elemento che ha come chiave i. E' quello che vuoi?

    La matricola gestita in quel modo fa un po' acqua... Dovresti passarla con lo studente (e dovrebbe essere un attributo di Studente...)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Originariamente inviato da Alex'87
    Sei sicuro di cosa viene restituito da e.getStudente(i)?
    Cosa fa quel metodo? Ti restituisce l'elemento che ha come chiave i. E' quello che vuoi?

    La matricola gestita in quel modo fa un po' acqua... Dovresti passarla con lo studente (e dovrebbe essere un attributo di Studente...)
    ho pensato che gestire la matricola con lo studente non ha senso.. la matricola deve essere la chiave, quindi può essere la chiave dell'hashmap relativa all'oggetto

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da LuLyLuNa
    ho pensato che gestire la matricola con lo studente non ha senso.. la matricola deve essere la chiave, quindi può essere la chiave dell'hashmap relativa all'oggetto
    La matricola è una proprietà dello Studente, ha perfettamente senso usarla come chiave... Altrimenti dove pensi di tenerla la matricola? In giro per il codice? Questo non ha senso...

    Che c'è di male nel fare questo?
    codice:
    Studente studente = new Studente(....);
    
    mappa_studenti.put(studente.getMatricola(), studente);

    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Originariamente inviato da Alex'87
    La matricola è una proprietà dello Studente, ha perfettamente senso usarla come chiave... Altrimenti dove pensi di tenerla la matricola? In giro per il codice? Questo non ha senso...

    Che c'è di male nel fare questo?
    codice:
    Studente studente = new Studente(....);
    
    mappa_studenti.put(studente.getMatricola(), studente);

    Era quello che intendevo non ci siamo capiti!

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da LuLyLuNa
    Era quello che intendevo non ci siamo capiti!
    Ah ok scusa, ho letto male il tuo messaggio
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.