Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di dako
    Registrato dal
    Dec 2008
    Messaggi
    8

    Legge da txt e preleva da ArrayList..ma è vuoto!

    Salve raga, sto prelevando delle Stringhe da un file di testo e li sto memorizzando all'interno di un ArrayList, ma quando cerco di prelevare l'iesimo elemento dell'ArrayList mi dice che questo è vuoto..qualcuno saprebbe dirmi il perchè??

    le stringhe sono di tipo:1; 32; Antonio Abate; Geometra; 3; 7; ...ecc
    2; 68; Marco Pirola; Ingegnere; 4; 6; ...ecc
    ecc...per circa 800 righe

    bene, io avrei bisogno di prelevare tutti i 2° e 3° elementi di ogni riga (nome cognome che sono un singolo token e la professione) ma ottengo sempre lo stesso output:

    java.lang.IndexOutOfBoundsException: Index: 2, Size: 1

    sto sicuramente facendo qualche casino ma non capisco dove.
    Vi posto il codice:

    ArrayList<String> v=new ArrayList<String>();
    File f= new File ("C:\\aaa.txt");
    FileInputStream fis = new FileInputStream (f);
    BufferedReader bReader= new BufferedReader( new InputStreamReader (fis));

    while(bReader.ready()) {
    String riga = bReader.readLine();
    StringTokenizer tokenizer = new StringTokenizer(riga, ";");

    while(tokenizer.hasMoreTokens()) {
    String parola = tokenizer.nextToken();
    v.add(parola);
    System.out.println(v.get(2));
    System.out.println(v.get(3));
    }
    }

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Per postare il codice in modo leggibile devi utilizzare i tags
    così diventa leggibile .....

    [XCODEX]
    qui ci metti le te linee
    di codice ed alla fine
    [X/CODEX] (elimina le X tra le parentesi e le parole)
    Ciao, Brainjar

  3. #3
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Ho provato a mettere un po' a posto il tuo codice.
    Adesso non da più l'eccezione precedente.
    Prova ad eseguire queste righe :

    codice:
            ArrayList<String> v=new ArrayList<String>();
            File f= new File ("C:\\aaa.txt");
            try {
                FileInputStream fis = new FileInputStream (f);
                BufferedReader bReader= new BufferedReader( new InputStreamReader (fis));
    
                while(bReader.ready()) {
                String riga = bReader.readLine();
                StringTokenizer tokenizer = new StringTokenizer(riga, ";");
    
                    while(tokenizer.hasMoreTokens()) {
                        String parola = tokenizer.nextToken();
                        v.add(parola);
                    }
    
                    System.out.println(v.get(2));
                    System.out.println(v.get(3));
    
                }
            }
            catch (Exception e)
            {
            }
    Ciao, Brainjar

  4. #4
    Utente di HTML.it L'avatar di dako
    Registrato dal
    Dec 2008
    Messaggi
    8
    Ottimo! finalmente ho ottenuto il 2° e 3° token, ma non capisco il perchè mi da 800 volte sempre la prima riga

    Guido Arrigoni
    Farmacista
    Guido Arrigoni
    Farmacista
    ecc...

  5. #5
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Il codice si comporta correttamente, esegue cioè ciò che gli dici di fare.
    Se desideri vedere il 2^ e 3^ token di 'ogni' riga devi memorizzare i token in modo diverso.
    Studiati le differenze tra i due frammenti di codice (il precedente e questo).
    Prova così :
    codice:
            ArrayList<ArrayList<String>> v=new ArrayList<ArrayList<String>>();
            File f= new File ("C:\\aaa.txt");
            try {
                FileInputStream fis = new FileInputStream (f);
                BufferedReader bReader= new BufferedReader( new InputStreamReader (fis));
    
                while(bReader.ready()) {
                String riga = bReader.readLine();
                StringTokenizer tokenizer = new StringTokenizer(riga, ";");
                    ArrayList<String> parole = new ArrayList<String>();
                    while(tokenizer.hasMoreTokens()) {
                        String parola = tokenizer.nextToken();
                        parole.add(parola);
                    }
                    v.add(parole);
                }
                for (int i =0; i<v.size(); i++) {
                    ArrayList<String> parole = (ArrayList<String>)v.get(i);
                    System.out.println(parole.get(2));
                    System.out.println(parole.get(3));
                }
            }
            catch (Exception e)
            {
            }
    Ciao, Brainjar

  6. #6
    Utente di HTML.it L'avatar di dako
    Registrato dal
    Dec 2008
    Messaggi
    8
    Bingo!!

    Ottima trovata. Avevo la soluzione sotto il naso ma proprio non riuscivo ad implementarla.
    Sei forte!! Grazie!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.