Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    8

    splittare un file e salvare elementi nella matrice

    Ciao a tutti , avrei bisogno di una mano e, siccome sono molto arrugginito in java, anche di una mano bella grossa.
    Ho un file di testo TXT in cui devo prendere alcuni elementi e salvarli in una matrice per poi fare delle operazioni. Mi spiego meglio, il file � cos� composto:


    codice:
    8059SW-02
    Firmware:  1.31 04/16
    
    
    Station: 001           (Nsts,AMB-8059     S/N 030WX60821)
    
    
        Date: 01/02/2017    Time: 00.00   (RMS  6 minute )
    
    
    Probe EP-1B-03 (Last Calibrated:28.11.16)
    
    
    
    
    Limit = 6.0  V/m          RMS 
    
    
    
    
    
    
    Date;Time;TxOn;RMS W.;Peak W.;Temp;
    ;;;V/m;V/m;C�;
    
    
    01/02/2017;00:00:00;;0.91;1.00;7;
    01/02/2017;00:06;;0.93;1.04;7;
    01/02/2017;00:12;;0.94;1.03;7;
    01/02/2017;00:18;;0.92;1.00;7;
    01/02/2017;00:24;;0.90;1.00;7;
    01/02/2017;00:30;;0.88;0.94;7;
    01/02/2017;00:36;;0.90;0.98;7;

    Quello che devo fare e' escludere la prima parte e partire da Date;Time; ecc, Devo prendere quella riga e mettere in corrispondenza i valori in una matrice ossia il risultato dovrebbe essere questo:

    Date | Time | TxOn | RMS W. | Peak | Temp
    01/02/2017 |00:00:00 | | 0.91 | 1.04 | 7

    Ora credo che non sia possibile fare una matrice di stringhe ed interi insieme e non sono sicuro di come java interpreti la data, come potrei fare?

    come potrei fare??

    grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Per iniziare ti sposto nel forum dedicato a Java.


    Ciao.
    "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 andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da raffux3 Visualizza il messaggio
    Quello che devo fare e' escludere la prima parte e partire da Date;Time; ecc,
    Puoi certamente usare la riga di intestazione "Date;Time;...." come "sentinella" per riconoscere l'inizio dei dati. Ovvero leggi e scarti le righe iniziali finché trovi quella intestazione. A quel punto puoi leggere "a vuoto" le successive 3 righe, quindi poi ti ritrovi solo con righe di "dati", che dovrai ovviamente analizzare in dettaglio.

    Quote Originariamente inviata da raffux3 Visualizza il messaggio
    Ora credo che non sia possibile fare una matrice di stringhe ed interi insieme e non sono sicuro di come java interpreti la data, come potrei fare?
    Ciascuna riga è un "record" di informazione e sarebbe appropriato rappresentarla con una classe apposita.
    Per le date/ore .... ci sono svariate possibilità. Il framework standard ha diverse classi per date ed orari, specialmente da Java 8 con la nuova Date/Time API.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Puoi certamente usare la riga di intestazione "Date;Time;...." come "sentinella" per riconoscere l'inizio dei dati. Ovvero leggi e scarti le righe iniziali finché trovi quella intestazione. A quel punto puoi leggere "a vuoto" le successive 3 righe, quindi poi ti ritrovi solo con righe di "dati", che dovrai ovviamente analizzare in dettaglio.


    Ciascuna riga è un "record" di informazione e sarebbe appropriato rappresentarla con una classe apposita.
    Per le date/ore .... ci sono svariate possibilità. Il framework standard ha diverse classi per date ed orari, specialmente da Java 8 con la nuova Date/Time API.

    Si questa è una cosa che dovrò fare più in là per fare delle "query". Attualmente ho fatto una ricerca in base ad un intervallo temporale dettato da Time. Una volta stabilito l'intervallo, il programma effettua una semplice media.

    Il prossimo step dovrebbe essere quello di creare la grafica di ciò con tanto di combobox (menu a tendina) dove selezionare l'intervallo e fare sempre la media. Quì sto avendo parecchie difficoltà poiché non so come creare il tutto, cioè parte del codice di grafica l'ho trovato su internet e riesco ad adattarlo però non so come strutturare la cosa nei diversi file. Cioè so che devo avere una classe che costruisca la grafica ed un'altra che faccia le operazioni di media...

    Come muovermi?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da raffux3 Visualizza il messaggio
    Come muovermi?
    Innanzitutto: fai una classe che "modella" una riga di informazione del file, fai una classe a parte che si occupa solo della lettura/parsing del file.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Innanzitutto: fai una classe che "modella" una riga di informazione del file, fai una classe a parte che si occupa solo della lettura/parsing del file.
    io attualmente ho questa situazione:

    codice:
    public class Estrattore {
    
    	public static void main(String [] args) throws FileNotFoundException, IOException {
            
    		BufferedReader br =  new BufferedReader(new FileReader("C://0102.TXT"));
    		String linea=br.readLine();
    		int k=0;
    		int i=0;
    		int cont=1;
    		System.out.println("Inserisci Da");
    		System.out.println("Inserisci A");
    		String [][] header= new String[241][6];
    
    
    		Scanner input = new Scanner(System.in);
    		String da = input.nextLine();
    		String a = input.nextLine();
    		input.close();
    
    
    		
           while(linea!=null)
           {
        	   
        	   String[] campiDellaStringa = linea.split(";");	
        	   linea=br.readLine();
        	   if(cont>14 && cont!=16 && cont!=17)
        	   {
        	   	for(int j=0;j<campiDellaStringa.length;j++) 
        	   	{
        	   		header[i][k]=campiDellaStringa[j];
        	   		//System.out.print(header[i][k]+ " ");
        	   			k++;
        	   	}
        	   				
        	   					System.out.println("");
        	   					i++;
        	   					k=0;
        	   		
        	   }
        	   cont++;
           }//while
           
           float media= MediaAdIntervallo(header, da, a);
           System.out.println(media);
           
        }
    	
    
    
    	//funzione calcolare media ad intervalli
    	public static float MediaAdIntervallo(String matrice[][], String partenza, String arrivo)
    	{
    		int cont=0;
    		float valore=0;
    		int inizio= CalcolaInizio(matrice, partenza);
    		int fine=CalcolaFine(matrice, arrivo);
    		
    		for(int i=inizio;i<=fine;i++)
    		{			
    				   String mystring=matrice[i][3];
    			       float temp=Float.parseFloat(mystring);
    			       valore+=temp;
    			       cont++;
    			
    		}
    		return valore/cont;
    	}
    	
    	//mi prendo gli indici
    	
    	public static int CalcolaInizio(String matrice[][], String Intervallo1)
    	{
    		
    		for(int i=0;i<matrice.length;i++)
    		{
    			
    			if(matrice[i][1].equals(Intervallo1))			
    				return i;			
    			
    		}
    		
    		return -1;
    	
    	}
    	
    	public static int CalcolaFine(String matrice[][], String Intervallo2)
    	{
    		
    		for(int i=0;i<matrice.length;i++)
    		{
    			if(matrice[i][1].equals(Intervallo2))
    				return i;
    				
    		}
    		
    		return -1;
    	
    	}
    	
    	
    	public static String EstraiTime(String matrice[][])
    	{
    		for(int i=1;i<matrice.length;i++)
    		{
    			return matrice[i][1];
    		}
    		return "";
    	}
    }

    e poi un altro file con

    codice:
    public class Application extends Estrattore
    
    {
    public static void Dati(String args[])
    {
    JFrame win;
    win = new JFrame("Esempio di JComboBox");
    String lista[]=new String[10];
    for(int i=0;i<lista.length;i++)
    lista[i]=EstraiTime(matrice);
    JComboBox cBox=new JComboBox(lista);
    Container c = win.getContentPane();
    c.add(cBox);
    win.setSize(200,200);
    win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    win.setVisible(true);
    }
    }
    la prima parte funziona la seconda no perché appunto è in fase di progettazione

Tag per questa discussione

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