tri d'une liste et débogage - Java - Programmation
Marsh Posté le 08-02-2014 à 19:41:16
sarah991 a écrit : bonsoir
|
Bonsoir,
Plusieurs problèmes :
Code :
|
Marsh Posté le 08-02-2014 à 20:11:25
Merci beaucoup pour ton aide
quand je teste ce code il me single l'erreur :NullPointerException
dans la ligne suivante
int c2 = l[i+1].lastIndexOf(" " ) ;
en fait dans mon cas j'ai plusieurs listes donc quand il arrive au dernier case de la première liste il se bloque par cette erreur peut être que c'est à cause i+1 ?
Marsh Posté le 08-02-2014 à 21:16:06
sarah991 a écrit : Merci beaucoup pour ton aide |
Un dépassement du tableau renvoie normalement l’exception ArrayIndexOutOfBoundsException. NullPointerException, c'est autre chose : http://fr.java.wikia.com/wiki/Java [...] rException.
Pourquoi +1, il faut regarder l'algo du tri à bulles et essayer de bien le comprendre : https://fr.wikipedia.org/wiki/Tri_%C3%A0_bulles.
Attention, en Java les tableaux sont indexés de 0 à taille-1 alors que sur Wikipedia le tableau est indexé de 1 à taille.
Si l'on veut trier chaque liste indépendamment, il suffit de reprendre le code et d'appeler la bonne liste à chaque fois, si l'on veut trier l'ensemble des listes, le plus simple est de concaténer chaque liste en une seule liste (https://stackoverflow.com/questions [...] ys-in-java).
Il faut aussi s'assurer que chaque String de la liste soit bien sous la forme : "le mot qui est suivi d'un nombre 0.45461" sans espaces au début ni à la fin, avec un seul espace pour délimiter le dernier mot et le nombre. Pour enlever les espaces au début et à la fin, on peut utiliser la méthode trim (http://docs.oracle.com/javase/7/do [...] trim%28%29)
Marsh Posté le 08-02-2014 à 21:28:51
j'ai fait un point d'arret sur la ligne:
Code :
|
; 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
Marsh Posté le 09-02-2014 à 13:51:26
sarah991 a écrit : j'ai fait un point d'arret sur la ligne:
; où le programme signale l'erreur |
Code :
|
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 :
|
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 :
|
Marsh Posté le 09-02-2014 à 14:51:26
Merci beaucoup honrisse
j'ai changer ma liste par une liste dynamique(ArrayList) et ça marche enfin
Marsh Posté le 08-02-2014 à 14:49:17
bonsoir
j'ai une liste qui contient dans chaque case un mot avec son score voilà un exemple
arbre 0.56887
deee 12.589
cfdss 3.589
dett 6.589155
dfrzz 5.69875
je voulai trier les lignes dans l'ordre décroissant
je voulais que ma liste soit comme ça:
deee 12.589
dett 6.589155
dfrzz 5.69875
cfdss 3.589
arbre 0.56887
voilà le code que j'ai essayé mais ça donne rien
quand je fait un breakpoint pour cette ligne
elle reste toujours rouge lors de débogage je sais pas pourquoi donc le tri ne peut pas s'effectuer
pourriez vous me dire les causes?
Merci d'avance.