Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

suddividere un file di dati

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

Postdi ventus85 » 03/10/07 18:44

Quindi come posso fare a convertire il testo "218.0" in numero così che possa scorrere il testo e cambiare da 218.0 a 228.4 ?
Boh, dopo guardo un po' nella documentazione se trovo qualcosa... :(
Born in the wind, born to be wild!
Avatar utente
ventus85
Utente Senior
 
Post: 327
Iscritto il: 05/07/06 09:36

Sponsor
 

Postdi mrblue » 04/10/07 13:27

devi usare NumberFormat impostando il giusto pattern restituisce Number (astratto) oppure java.math.BigDecimal,
secondo me piu comodo per lavorare con gli oggetti numerici (ha gli operatori come metodi)
Sbagliare è umano, ma per riuscire davvero a incasinare completamente le cose ci vuole un computer.
---------------------
http://mrblue73.blogspot.com/
mrblue
Utente Senior
 
Post: 364
Iscritto il: 22/10/01 01:00
Località: Roma

Postdi ventus85 » 07/10/07 08:49

Ho usato questo codice per dividere il file a seconda dell'ultimo valore presente nella riga.
Codice: Seleziona tutto
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.File;

public class PartizioneClasse   {
 public static void main(String[] args) throws Exception {
   BufferedReader rd=new BufferedReader (new FileReader("segment.all"));
   String linea=null;
   
   int count=1;
   
   while ((linea=rd.readLine())!= null) {
      String[] lineadivisa=null;
      lineadivisa=linea.split(",");
      if (lineadivisa[19]=="6"){
         File outputfile=new File("file1.txt");
         BufferedWriter out=new BufferedWriter (new FileWriter(outputfile));
         out.write(linea+"\r");
       }
      else {
         File outputfile=new File("file2.txt");
         BufferedWriter out=new BufferedWriter (new FileWriter(outputfile));
         out.write(linea+"\r");
         count++;
      }
   }
 }
}

Però non riesce a capire la scritta if (lineadivisa[19]=="6"){.
Questo l'ho capito perchè avevo messo invece del salvataggio nel secondo file avevo messo una System.out . Praticamente per lui tutti i vettori creati hanno nell'ultima posizione valori diversi da "6" (infatti mi stampava per tutte le righe il testo della System.out) mentre in verità non è così.
Poi è sbagliato anche il blocco dell'else perchè non mi scrive, ma quello ho da modificarlo...
Come posso fare allora per creare questi sette file (ogni file è una partizione del file originare divisi a seconda dell'ultimo valore che va da 1 a 7)?
Grazie!

mrblue NumberFormat e BigDecimal se ricordo bene servono per arrotondare e troncare un numero, io invece voglio modificare quel numero del file di testo per fare una normalizzazione con formula v*=(v-vmin)/(vmax-vmin) dove v* è il nuovo valore, v è il vecchio, vmin è il valore minimo della colonna di numeri e vmax il valore massimo così da ottenere tutti i numeri della colonna compresi nell'intervallo [0,1]. In parole povere scorrere il file di testo e modificare tutti i numeri con questa formula.

Ho un ulteriore domanda: è possibile fare questo
http://www.pc-facile.com/forum/viewtopic.php?t=66498 ?
Se è possibile allora modifico i file colonna per colonna e poi riunisco le colonne, sennò devo usare il file con i valori vecchi splittare riga per riga (usando il carattere ",") e poi fare qualcosa del tipo "se è il testo della prima posizione del vettore creato con lo split usa la formula di sopra stando attenti ai valori massimi e minimi che cambiano colonna per colonna (il massimo e il minimo lo prendo per ogni colonna, non di tutto!), se è nella seconda posizione usa la formula con i relativi massimi e minimi ecc...ec..

Spero di essere stata chiara (mica tanto! :roll: ).
Grazie!
Born in the wind, born to be wild!
Avatar utente
ventus85
Utente Senior
 
Post: 327
Iscritto il: 05/07/06 09:36

Postdi mrblue » 08/10/07 10:54

numberformat serve x estrarre un numero da una stringa formatta anche in maniera "strana" tipo 123'23
mentre big decimal fa da solo la conversione ma utilizzando un pattern piu normale
Sbagliare è umano, ma per riuscire davvero a incasinare completamente le cose ci vuole un computer.
---------------------
http://mrblue73.blogspot.com/
mrblue
Utente Senior
 
Post: 364
Iscritto il: 22/10/01 01:00
Località: Roma

Postdi mrblue » 08/10/07 11:13

credo che prima ti dovrai costruire una matrice,
pupi prendere le colonne e con un bel sort (java.util.Arrays) ti prendi min e max e poi applichi la formula...
Sbagliare è umano, ma per riuscire davvero a incasinare completamente le cose ci vuole un computer.
---------------------
http://mrblue73.blogspot.com/
mrblue
Utente Senior
 
Post: 364
Iscritto il: 22/10/01 01:00
Località: Roma

Postdi ventus85 » 08/10/07 18:22

Forse ho risolto in un altro modo :) ...appena fatto lo posto...
Grazie!
Born in the wind, born to be wild!
Avatar utente
ventus85
Utente Senior
 
Post: 327
Iscritto il: 05/07/06 09:36

Postdi ventus85 » 15/10/07 15:14

L'ho risolto...ho dei problemi con internet, ma appena posso spedisco il codice...
Born in the wind, born to be wild!
Avatar utente
ventus85
Utente Senior
 
Post: 327
Iscritto il: 05/07/06 09:36

Precedente

Torna a Programmazione


Topic correlati a "suddividere un file di dati":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti