Visualizzazione dei risultati da 1 a 7 su 7

Visualizzazione discussione

  1. #1

    Problema StringTokenizer e ArrayList

    Buongiorno. Sto facendo un esercizio in cui devo creare un programma per la gestione di un registro studenti. So che la StringTokenizer è deprecata, ma me lo richiede l'esercizio quindi la uso lo stesso.

    Ho creato parte una classe Studente che si occupa di sovrascrivere il metodo toString e basta per ora. Ogni Studente è identificato da nome cognome e matricola.

    Il programma deve leggere dal file archivio.txt nome, cognome e matricola degli studenti e salvarli in un oggetto di tipo studente, che a sua volta io ho deciso di salvare su un ArrayList. SUccessivamente devo stampare il contenuto dell'ArrayList normalmente e al contrario. La parte in cui trasformo ogni singola linea in un token sembra funzionare, ma in output io ottengo la seguente cosa:


    Sto iniziando a leggere il file ./archivio.txt
    Alfonso Maiorino 743191
    Laura Frisone 123455
    Silvio Preti 387121
    Stefano Manduzio 217389
    Ho finito di leggere dal file ./archivio.txt e l'ho chiuso!
    [{Nome: Alfonso; Cognome: Maiorino; Matricola: 743191}, {Nome: Alfonso; Cognome: Maiorino; Matricola: 743191}, {Nome: Alfonso; Cognome: Maiorino; Matricola: 743191}, {Nome: Alfonso; Cognome: Maiorino; Matricola: 743191}]
    [{Nome: Alfonso; Cognome: Maiorino; Matricola: 743191}, {Nome: Alfonso; Cognome: Maiorino; Matricola: 743191}, {Nome: Alfonso; Cognome: Maiorino; Matricola: 743191;}, {Nome: Alfonso; Cognome: Maiorino; Matricola: 743191;}

    L'ArrayList sopra è quello stampato normalmente, quello sotto quello stampato al contrario. Non capisco perchè, pur funzionandomi la tokenizzazione e pur funzionandomi la lettura delle singole linee, quando devo aggiungere gli elementi sull'ArrayList mi mette sempre lo stesso elemento ma quattro volte.

    Riporto sotto il codice della classe GestioneRegistro.

    codice:
    public class GestioneRegistro {
    
    
        private String nome = new String();
        private String cognome = new String();
        private String matricola = new String();
        Studente studente = new Studente(nome, cognome, matricola);
    
    
        public ArrayList<Studente> letturaDati(String nomeFileDaLeggere) {
            BufferedReader reader = null;
            ArrayList<Studente> elencoStudenti = new ArrayList<Studente>();
            try {
                System.out.println("Sto iniziando a leggere il file " + nomeFileDaLeggere);
                reader = new BufferedReader(new FileReader(nomeFileDaLeggere));
                String linea = reader.readLine();
                StringTokenizer st = new StringTokenizer(linea);
                while (linea != null) {
                    System.out.println(linea);
                    while (st.hasMoreTokens()) {
                        studente.nome = st.nextToken();
                        studente.cognome = st.nextToken();
                        studente.matricola = st.nextToken();
                        }
                    linea = reader.readLine();
                    elencoStudenti.add(studente);
                }
            } catch (FileNotFoundException e) {
                System.out.println("Non ho trovato il file " + nomeFileDaLeggere);
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (reader != null) {
                        reader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("Ho finito di leggere dal file " + nomeFileDaLeggere + " e l'ho chiuso!");
            return elencoStudenti;
        }
    
    
        public void stampaDati(ArrayList<Studente> v) {
            System.out.println(v);
        }
    
    
        public void stampaReverse(ArrayList<Studente> v) {
            Collections.reverse(v);
            System.out.println(v);
        }
        
        public static void main(String[] args) {
            GestioneRegistro registro = new GestioneRegistro();
            ArrayList<Studente> elenco = registro.letturaDati("./archivio.txt");
            registro.stampaDati(elenco);
            registro.stampaReverse(elenco);
        }
    }

    Grazie mille a chiunque sia disposto a darmi una mano!
    Ultima modifica di shaqino; 05-10-2015 a 09:47

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.