Bonjour,
Je suis débutante en Java et je désire faire un programme dont les données d'entrée sont les suivantes :
A partir de ce programme, je désire pour deux (ou différents) colonnes ayant la même valeur au niveau de la dernière ligne (ligne 13), récupérer uniquement les colonnes qui ont une la plus forte valeur de la ligne 12 (l'avant dernière ligne). Par exemple pour les colonnes 2 et 3, elles possèdent une même valeur (égale à 1 pour la ligne 13), mais la colonne 2 uniquement sera retenue puisque sa valeur = 1212 (ligne 12) qui est > à celle égale à 119.6147461, etc.... Bien évidemment je supprime les colonnes dont j'en ai pas besoin. Je veux après écrire le résultat dans un fichier texte (je n'ai toujours pas fait cette étape). Mais avant tout selon le code ci-dessous, j'obtiens l'erreur java.lang.IndexOutOfBoundsException: Index: 4, Size: 4 (que je n'arrive pas à résoudre)1 10 11 12
2 1474 119 18
3 1658 152 28
4 1381 119 20
5 854 66 10
6 1299 270 43.58056641
7 793 77 32
8 1230 116 0
9 606 145.6937256 24.72756958
10 1004 112.4961548 24.64657593
11 1194 192.3924561 30.37597656
12 1212 119.6147461 24.68707275
13 1 1 2 2
Extrait du résultat obtenu:
Voici mon code(cont....)
24.68707275
1.0
1.0
2.0
2.0
Les valeurs communes sont 1.0 , 1.0, et la médiane la plus grande est 1212.0
Same PcGroupe!!
Elément0 , 10.0 supprimé!
Elément1 , 1474.0 supprimé!
Elément2 , 1658.0 supprimé!
Elément3 , 1381.0 supprimé!
Elément4 , 854.0 supprimé!
Elément5 , 1299.0 supprimé!
Elément6 , 793.0 supprimé!
Elément7 , 1230.0 supprimé!
Elément8 , 606.0 supprimé!
Elément9 , 1004.0 supprimé!
Elément10 , 1194.0 supprimé!
Elément11 , 1212.0 supprimé!
Elément12 , 1.0 supprimé!
java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
Quelqu'un saurait-il m'indiquer comment corriger ce problème ?
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 import java.util.*; import java.io.*; public class TriIOnPCGroupe { public static void main(String[] args) { try { InputStream ips = new FileInputStream("C:/Users/dgrissa/Desktop/PCGroupe.txt"); InputStreamReader ipsr = new InputStreamReader(ips); BufferedReader br = new BufferedReader(ipsr); String ligne = " "; int nombreDeLignes = 13; // par exemple int nombreDeColonnes = 4; List<List<Double>> valeurs = new ArrayList<List<Double>>(); while ((ligne = br.readLine()) != null) { String[] valeursTextuelles = ligne.split("\t"); List<Double> valeursLigne = new ArrayList<Double>(); if (valeursTextuelles != null) for (String valeurTextuelle : valeursTextuelles) valeursLigne.add(Double.parseDouble(valeurTextuelle)); valeurs.add(valeursLigne); } for(List<Double> elem: valeurs) { System.out.println (elem); } // lire le contenu d'une liste élément par élément double val = 0.00; double cmp1 = 0.00; double cmp2 = 0.00; double med1 = 0.00; double med2 = 0.00; for (int i = 0; i < valeurs.size(); i++) { for (int j = 1; j < valeurs.get(i).size(); j++) { if (valeurs.get(i) != null) if (valeurs.get(i).size() > j) val = valeurs.get(i).get(j); System.out.println (val); } } for (int k = 1; k < valeurs.size(); k++){ cmp1 = valeurs.get(12).get(k); cmp2 = valeurs.get(12).get(k+1); med1 = valeurs.get(11).get(k); med2 = valeurs.get(11).get(k+1); if(cmp1 == cmp2){ if (med1>med2){ System.out.println("Les valeurs communes sont " +valeurs.get(12).get(k)+ " , " +valeurs.get(12).get(k+1) +", et la mediane la plus grande est "+med1); System.out.println ("Same PcGroupe!!"); //Supprimer la colonne!! for (int n= 0; n < valeurs.size(); n++){ valeurs.remove(valeurs.get(n).get(k)); System.out.println ("Elément" + n + " , " +valeurs.get(n).get(k) + " supprimé!"); } }else System.out.println("La valeur commune est " +valeurs.get(12).get(k)+", et la mediane la plus grande est "+med2); } //else System.out.println ("Nothing!!"); } ips.close(); } catch (Exception e) { System.out.println(e.toString()); } } }
Merci d'avance pour votre aide.
Partager