sarah991 a écrit :
j'ai fait un point d'arret sur la ligne:
Code :
- int c2 = l[i+1].lastIndexOf(" " ) +1
|
; où le programme signale l'erreur
je parle de i+1 dans cette ligne
ma 1ere liste contient 7 cases
en incrémentant i à chaque fois par f5, la ligne est vert jusqu'à i=6 quand je fais encore une fois f5, elle devient rouge
|
Code :
- for (int i = 0; i < list.length - 1; i++) {
|
Il ne devrait pas y avoir de dépassement de tableau : la boucle va de 0 à list.length - 2 (signe strictement inférieur) avec length qui renvoie la taille du tableau.
Il faut que le critère d'arrêt de la boucle for soit bien définie.
Si vous avez un doute utilisez des System.out.println pour afficher la valeur des variables.
Code :
- String[] list = new String[] { "arbre 0.56887", "deee 12.589",
- "cfdss 3.589", "dett 6.589155", "dfrzz 5.69875" };
- boolean swap = true;
- do {
- swap = false;
- for (int i = 0; i < list.length - 1; i++) {
- System.out.println("i=" + i + " ; i+1=" + (i+1) + " ; list.length=" + list.length);
- int c1 = list[i].lastIndexOf(" " ) + 1;
- int c2 = list[i + 1].lastIndexOf(" " ) + 1;
- try {
- if (Float.valueOf(list[i].substring(c1)) < (Float
- .valueOf(list[i + 1].substring(c2)))) {
- swap = true;
- String a = list[i];
- list[i] = list[i + 1];
- list[i + 1] = a;
- }
- } catch (NumberFormatException e) {
- e.printStackTrace();
- }
- }
- } while (swap);
- for (String s : list) {
- System.out.println(s);
- }
|
Enfin, vu que la dernière fois l'erreur était NullPointerException, peut être que le tableau contient un String null.
Avant de faire le tri, affichez ce qu'il y a dans la liste pour vérifier :
Code :
- for (String s : list) {
- System.out.println(s);
- }
|