Bonjour,
Je voudrais avoir un avis à propos d’un csv à importer et parser sous java pour consécutivement utiliser les valeurs pour les calculs.
Voilà la sortie fichier que j’ai déjà importé et modifier pour avoir la forme voulue :
[[ZZW00011604], [2009], [01], [AAAA], [289,289,283,283,289,289,278,267,272,278,267,278,267,267,278,267,267,272,272,272,278,272,267,267,267,278,272,272,272,272,272]]
[[ZZW00011604], [2009], [01], [BBBB], [217,228,222,233,222,222,228,217,222,183,189,194,161,183,178,222,211,211,194,217,217,217,211,211,200,222,217,211,222,206,217]]
[[ZZW00011604], [2009], [01], [CCCC], [0,30,0,0,25,41,0,0,0,0,56,0,8,0,0,0,0,0,3,0,51,0,53,0,10,15,41,0,86,28,15]]
[[ZZW00011604], [2009], [01], [DDDD], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]
[[ZZW00011604], [2009], [01], [EEEE], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]
[[ZZW00011604], [2009], [01], [FFFF], [-9999,1,-9999,1,1,1,-9999,1,-9999,-9999,1,1,1,-9999,-9999,-9999,-9999,1,1,1,1,-9999,1,-9999,1,1,1,1,1,1,1]]
[[ZZW00011604], [2009], [02], [AAAA], [267,278,272,267,278,278,278,267,278,267,272,267,261,261,261,267,278,272,278,278,283,272,272,267,267,267,267,272,-9999,-9999,-9999]]
[[ZZW00011604],
Voilà mon code commenté qui m’a permis d’avoir cette sortie en haut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
 
 
public class ReadFileBis01 {
 
	public ReadFileBis01() {
		// TODO Auto-generated constructor stub
	}
 
	/**
         * @param args
         */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try (BufferedReader br = new BufferedReader(new FileReader("C:\\Donnees_base\\ZZW00011604.dly")))
		{
			String sCurrentLine;
 
			while ((sCurrentLine = br.readLine()) != null){	
				//System.out.println(sCurrentLine);
				//test le suivant;	
				String ar1 = new String();
				String ar2 = new String();
				String ar3 = new String();
				String ar4 = new String();
				String ar8 = new String();
				String ar9 = new String();
 
				try {
					ar1 = sCurrentLine.substring(0, 11); //id_fichier
					ar2 = sCurrentLine.substring(11, 15); //annee
					ar3 = sCurrentLine.substring(15, 17); //mois
					ar4 = sCurrentLine.substring(17, 21); //variable
					String ar5 = sCurrentLine.substring(21); //jours du mois
					String ar6 = ar5.replace("X",""); //j'elimine les separateurs X
					String ar7 = ar6.replace("T",""); //j'elimine info "T"
					ar8= ar7.trim();//supprime espace de debut et de fin
					ar9 = ar8.replaceAll(" +",",");//remplace espace par virgure pour les jours du mois
 
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
 
	            ArrayList<ArrayList<String>> matrix = new ArrayList<ArrayList<String>>();  
	            ArrayList<String> al = new ArrayList<String>();
 
	            ArrayList<String> al1 = new ArrayList<String>();
	            ArrayList<String> al2 = new ArrayList<String>();
	            ArrayList<String> al3 = new ArrayList<String>();
	            ArrayList<String> al4 = new ArrayList<String>();
	            ArrayList<String> al5 = new ArrayList<String>();
 
	            matrix.add(al1);
	            matrix.add(al2);
	            matrix.add(al3);
	            matrix.add(al4);
	            matrix.add(al5);
	            matrix.get(0).add(ar1);
	            matrix.get(1).add(ar2);
	            matrix.get(2).add(ar3);
	            matrix.get(3).add(ar4);
	           matrix.get(4).add(ar9);
 
	            System.out.println(matrix);
 
	            //cette bouble renvoie une erreur outofbound exception;
	            for (int i=0; i<ar9.length(); i++) {
					 ArrayList<String> items =  new  ArrayList<String>(Arrays.asList(ar9.split(",")));
				 //System.out.println(items.get(i));
 
		        }
				}
			br.close();//Close the stream to free the memory
		}
		catch (IOException e){
			e.printStackTrace();
		}
	}
 
}
Ce que je veux faire, c’est pour chaque id_fichier / annee / mois / variable, faire une itération sur l’ensemble des jours du mois, afin de calculer pour chaque jours par exemple : AAAA+BBBB+CCCC
Le type de « variable » doit être interger, mais je ne peux pas le parcourir dans une boucle dans ce cas.
Voilà visuellement, ce à quoi le tableau ressemble. Je ne m’intéresse pas à un affichage du tableau tel quel, mais plus à pouvoir parcourir le tableau et de pouvoir faire les calculs désirés.
id_fichier....ZZW00011604....ZZW00011604....ZZW00011604....ZZW00011604...
Annees.........2009..................2009...................2009...................2009.....................
Mois.............1........................1.........................1.........................1...........................2…………..3
Variable........AAAA.................BBBB...................CCCC..................DDDD...................AAAA.......BBBB
.....................289………………....217………………....0……………………....0………………..........0…………..0
.....................289………………....228………………....30…………………....0…………………..…....0…………..22
.....................283………………....22………………......0……………………....0……………....……....3…………. 13
.....................283………………....233………………....0………………….…...0……………….……....0………....55
……..
……..
………
…….dernier.jour.du.mois
Il faut noter qu’il n’existe qu’un seul `id_fichier` et une seule `annee` dans le fichier à traiter. Je garde ces variables, car ce sont elles qui vont me permettre de distinguer les calculs effectuer dans le fichier en exemple, avec d’autres fichiers que je vais inclure par la suite. Merci de vos suggestions.