Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026

    Leggere un file di testo con carattere separatore ed inserire un array

    Buongiorno.
    Vorrei leggere un file di testo con dei valori numerici, ed inserire i valori dentro un'array, per ogni singolo vettore il singolo valore.
    Il file di testo ha un carattere separatore, che ho assegnato arbitralmente '|'.
    Il file contiene i seguenti valori
    codice:
    10.61|70.52|
    9.86|58.21|
    8.99|68.50|
    5.60|98.70|
    Ho creato questo script per leggere il file e per assegnarlo ad un array di char:
    codice:
    FileReader fr = new FileReader(
                    "/_jee_juno_programmi/FileProve/statistica.txt");
            BufferedReader br = new BufferedReader(fr);
            String s = "";
            String sup = "";
            System.out.println("Legge le stringhe dal file");
            while ((s = br.readLine()) != null) {
                // concatenazione stringa
                sup += s;
                System.out.println(s);
            }
            fr.close();
            System.out.println("-------------");
            System.out
                    .println("Stringa sempre del file rappresentata orrizontalmente");
    
            // stringa ridefinita in modo orrizontale
            System.out.println(sup);
            System.out.println();
            
            int lunghezza2 = sup.length();
            
            char c1[] = new char[lunghezza2];
        
            sup.getChars(0, lunghezza2, c1, 0);
        
            CharArrayReader input1bis = new CharArrayReader(c1);
    
            int ii;
            System.out.println("stringa trasformata in caratteri:");
            while ((ii = input1bis.read()) != -1) {
                System.out.print((char) ii);
            }
            System.out.println("\nLunghezza stringa caratteri = " + lunghezza2);
    
            // rimposta il puntatore all'inizio
            System.out.println("rimpostato il puntatore");
            input1bis.reset();
            String pre = "";
            boolean flag = true;
            while ((ii = input1bis.read()) != -1) {
    
                System.out.print((char) ii);
                if ((char) ii != '|' && flag == true) {
                    pre += (char) ii;
                    flag = true;
                } else {
                    flag = false;
                }
                if ((char) ii != '|' && flag == false) {
                    pre += (char) ii;
                    flag = true;
                } else {
                    flag = false;
                }
            }
            System.out.println("\npre " + pre);
    Ma devo perferzionarlo, qualcuno ha qualche idea?
    Grazie.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Array di char? Se ti servono i valori "numerici" (intesi come numeri double o quel che vuoi) non serve fare tutto quell'arzigogolo di codice.

    codice:
    FileReader fr = null;
    BufferedReader br = null;
    try {
       fr = new FileReader("/_jee_juno_programmi/FileProve/statistica.txt");
       br = new BufferedReader( fr );
    
       String line = null;
       while((line = br.readLine()) != null) {
          String[] dati = line.split("\\|");
          double[] valori = new double[ dati.length ];
          for(int i=0; i<dati.length; i++) {
             valori[i] = Double.parseDouble( dati[i] );
          }
          // ...   fai quel che vuoi con l'array di double "valori" della n-esima riga del file
       }
    } catch (Exception e) {
       e.printStackTrace();
    } finally {
       if (br != null) {
          try { br.close(); } catch (Exception e) { }
       } else {
          if (fr != null) {
             try { fr.close(); } catch (Exception e) { }
          }
       }
    }

    Ciao.
    Ultima modifica di LeleFT; 08-11-2016 a 12:37
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Grazie funziona come volevo

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.