J'ai parcouru la faq, mais je n'ai trouvé qu'une réponse pour un tableau en une dimension :
si j'ai
comment le trier sur la première dimension (64).Code:
1
2 int tab [][] = new int [64][2];
Merci beaucoup
Philippe
Version imprimable
J'ai parcouru la faq, mais je n'ai trouvé qu'une réponse pour un tableau en une dimension :
si j'ai
comment le trier sur la première dimension (64).Code:
1
2 int tab [][] = new int [64][2];
Merci beaucoup
Philippe
Il suffit de le considérer comme un tableau a une seule dimension, dont chaque élément est lui-même un tableau.
Donc
ceci tri mon tableau sur la première dimension ?Code:
1
2
3
4
5
6
7
8
9 import java.util.* public class Test { public static void main(String[] args) { int[] []tab = new int[64][2]; //initialisation du tableau Arrays.sort(tab); } }
Philippe
Il faudrait que tu crées un Comparator qui te permette de comparer la 2ème dimension, parce que trier des tableaux d'entiers entre eux, ce n'est pas naturel - il y a beaucoup d'ordres possibles.
j'ai écrit ceci :
en réponse, j'ai "mauvais indice" l'exception est interceptée, je ne voudrais pas poser deux question et dire pourquoi l'exception est-elle interceptée, surtout que j'ai essayé d'inverser i et j pour le même résultat, mais au moins une question :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.*; public class Test { public static void main(String[] args) { try { int[] []tab = new int[64][2]; for(int i=1; i<2;i++) for(int j=64; i>1-1;j--) tab[i][j]=i; Arrays.sort(tab); for(int i = 0; i < 2; i++) for(int j=0; i<64;j++) System.out.println(tab[i][j]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("mauvais indice"); } } }
est-il exact ?Code:
1
2 Arrays.sort(tab);
(le programme initialisait le vecteur avec un ordre décroissant et souhaitait rétablir l'ordre croissant)
Précédemment, j'ai essayé, trouvant plus logique :
"mauvais indice" malgre toutCode:
1
2
3 for(int i=64; i>2;i--) for(int j=0; i<2;j++)
Philippe
Tu fais plusieurs boucles sur tes tableaux.
Un tableau du genre int[64][2] se parcourt avec des indices qui, curieusement, seront du genre [0 à 63][0 à 1].
Sinon, il n'existe pas d'ordre naturel sur les tableaux de deux entiers, donc il faut utiliser Arrays.sort(Object[], Comparator).
Ne te reste plus qu'à coder le comparator selon ton souhait.
Attention !
Tu initialise jCode:for(int j=0; i<64;j++)
Tu compare i à 64 <-- Erreur, ce n'est pas la bonne variable
Tu incrémente j
Et tu as fait cette erreur à chaque fois.
S'il n'y avait pas eu d'exception, ça partait probablement en boucle infinie.
merci de me l'avoir fait remarqué, mais je ne pourrais le remettre en ordre que demain, il est sur mon ordi au bureau !
mais certainement, merci, c'est le genre de betise que je n'aurais pas vérifiée ou bien au bout d'une heure de déprime !
Philippe
Voilà le probleme est résolu, et un grand merci
je crée un tableau d'entiers en 2 dim et j'applique Arrays.sort à l'une d'entre elle et elle est triée.
mais, en fait elle sont indépendantes (les dimensions), si j'ai le même tableau (demographique par exemple la personne vit à telle altitude et ses résultats au vu de tests médicaux évolue selon cette altitude) comment attacher les deux dim ensemble ? (je trie l'altitude et j'ai le resultat médical correspondant sur le même indice de la deuxieme dim ?Code:
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 import java.util.*; public class Test { public static void main(String[] args) { try { int[] []tab = new int[2][64]; for(int i=0; i<2;i++) for(int j=0; j<64;j++) tab[i][j]=63-j; Arrays.sort(tab[0]); for(int i = 0; i < 2; i++) { for(int j=0; j<64;j++) System.out.print(tab[i][j]+" "); System.out.println(); } } catch (ArrayIndexOutOfBoundsException e) { System.out.println("mauvais indice"); } } }